문제는 '주어진 배열에서 출현빈도가 절반 이상인 값을 찾아라' 입니다.
첫번째.
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
다만 이 아이디어의 경우, 문제가 제시했던 최빈값의 기준( 전체 갯수의 절반)을 이용하지 못한 코드라 좀더 고민을 해보도록 하겠습니다.
두번째.
아직 아이디어가 생각나지 않아 좀더 고민해서 찾아보겠습니다.
'코딩테스트 > Leet Code' 카테고리의 다른 글
[LeetCode] 자바, 20. Valid Parentheses (0) | 2020.08.10 |
---|---|
[LeetCode] 자바 53. Maximum Subarray (0) | 2020.08.10 |
[LeetCode] 자바 448. Find All Numbers Disappeared in an Array (0) | 2020.08.10 |
[LeetCode] 자바, 283. Move Zeroes (0) | 2020.08.09 |
[LeetCode] 자바 136. Single Number (0) | 2020.08.08 |
댓글