[LeetCode-169] Find the number of occurrences in the array greater than ⌊ n / 2 ⌋ times

// method 1
    public static int majorityElement_1(int[] num) {

        int major=num[0], count = 1;
        
        for (int i=1; i<num.length;i++) {
            if (count == 0) {
                count++;
                major=num[i];
            } else if (major == num[i]) {
                count++;
            } else count--;
            
        }
        return major;
    }
    
    // method 2
    public static int majorityElement_2(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length/2];
    }
    
    // method 3
    public static int majorityElement_3(int[] nums) {
         Map<Integer, Integer> myMap = new HashMap<Integer, Integer>();
            //Hashtable<Integer, Integer> myMap = new Hashtable<Integer, Integer>();
            int ret=0;
            for (int num: nums) {
                if (!myMap.containsKey(num))
                    myMap.put(num, 1);
                else
                    myMap.put(num, myMap.get(num)+1);
                if (myMap.get(num)>nums.length/2) {
                    ret = num;
                    break;
                }
            }
            return ret;
    }

 

Guess you like

Origin www.cnblogs.com/nachdenken/p/12737711.html