1. 程式人生 > 其它 >力扣簡169 多數元素

力扣簡169 多數元素

自己用了一個map:

字典Map:(鍵值對)

Map<Integer, Integer> map=new HashMap<Integer, Integer>();

map.containsKey(key);       contains字典是否包含鍵key

map.replace(key, map.get(key)+1);        replace 替換,返回舊的val

                                                                get 得到key對應的value

map.put(key,value);            放入新的鍵值對

for(int i:map.keySet()) {}   對於key集合中的每個key做迴圈

package leetcode01;

import java.util.HashMap;
import java.util.Map;

//給定一個大小為 n 的陣列 nums ,返回其中的多數元素。多數元素是指在陣列中出現次數 大於 ⌊ n/2 ⌋ 的元素。
//你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
//進階:嘗試設計時間複雜度為 O(n)、空間複雜度為 O(1) 的演算法解決此問題。
public class Solution169 {
    public static int
majorityElement(int[] nums) { Map<Integer, Integer> map=new HashMap<Integer, Integer>(); for(int i=0;i<nums.length;i++) { if(map.containsKey(nums[i])) { map.replace(nums[i], map.get(nums[i])+1); } else map.put(nums[i],
1); } for(int i:map.keySet()) { if(map.get(i)>nums.length/2) { return i; } } return 0; } public static void main(String[] args) { // TODO Auto-generated method stub int[] nums= {1,2,1,2,2}; System.out.print(majorityElement(nums)); } }

 看了簡136 只出現一次的數字想的思路 排序,然後逐個統計。

public static int majorityElement(int[] nums) {
        Arrays.sort(nums);
        int num=1;
        int pre=nums[0];
        for(int i=1;i<nums.length;i++) {
            if(pre==nums[i]) {
                num++;
                if(num>nums.length/2) {
                    return pre;
                }
            }
            else {
                pre=nums[i];
                num=1;
            }
        }
        return pre;
    }