Leetcode 169) Majority Element

image

  • Dictionary에 넣으면서 몇번나왔는지 확인. 과반 이상 나왔으면, 바로 리턴해준다.
  • 다른 방법에서는 조건인 ‘과반 이상 나온다’를 아주 잘 활용했다.!!
class Solution {
    public int majorityElement(int[] nums) {
        Map<Integer,Integer> m = new HashMap<>();
        if(nums.length==1){
            return nums[0];
        }
        int result=0;
        for(int item : nums){
            if(m.containsKey(item)){
                int val = m.get(item);
                int div = nums.length/2;
                if(val>= div){
                    result=item;
                    break;
                }
                m.put(item, ++val);
            }else{
                m.put(item, 1);
            }
        }
        return result;
    }
}

다른 방법

  • 어차피 가장 많은 숫자가 과반 이상 나오니까, 굳이 숫자를 세서 담아 놓지 않고 아래처럼 할 수 있다. 과반이상 나온다는 보장이 없으면 아래처럼 할 수 없다.
class Solution {
    public int majorityElement(int[] nums) {
        
       int majElmnt = nums[0];
        int count = 1;
        for(int i=1 ; i < nums.length ; i++){
            if(nums[i] == majElmnt){
                count++;
            } else {
                count--;
            }
            if(count == 0) {
                 majElmnt = nums[i];
                 count++;
            }
               
        }
        return majElmnt;
    }
}

© 2018. All rights reserved.

Powered by Hydejack v8.5.2