본문 바로가기
코딩테스트/Leet Code

[LeetCode] 자바 169. Majority Element

by 핸디(Handy) 2020. 8. 9.


문제는 '주어진 배열에서 출현빈도가 절반 이상인 값을 찾아라' 입니다.

첫번째.

class Solution {
    public int majorityElement(int[] nums) {
        int majorityElementNum = nums.length;
        HashMap<Integer, Integer> hash_table = new HashMap<>();
        //전체 케이스 세고
        for (int i : nums) {
            hash_table.put(i, hash_table.getOrDefault(i, 0) + 1);
        }
        int maxNum = 0;
        int resultIndex = 0;
    
        //가장 많이 나온거로 
          for (int i : nums) {
            if (hash_table.get(i) > maxNum) {
                maxNum = hash_table.get(i);
                resultIndex = i;
            }
          }
        return resultIndex;
    }
}

아이디어는 '전체 나온 값들에 대한 빈도를 세고, 그중에 가장 높은 것을 찾자' 입니다.

따라서 HashMap을 이용해서 각 숫자의 출현빈도를 구해주고 가장 높은 값을 찾아냈습니다.

해당 코드의 getOrDefault의 경우 아래의 글에서 사용방법과 예시를 보실 수 있습니다.

2020/08/08 - [코딩테스트/Leet Code] - [LeetCode] 자바 136. Single Number

다만 이 아이디어의 경우, 문제가 제시했던 최빈값의 기준( 전체 갯수의 절반)을 이용하지 못한 코드라 좀더 고민을 해보도록 하겠습니다.

두번째.

아직 아이디어가 생각나지 않아 좀더 고민해서 찾아보겠습니다.

댓글