👀 문제
https://leetcode.com/problems/single-number/
👊 도전
1. 설계
- 해시맵을 이용하여 숫자별 개수를 센다.
- 해시맵을 확인하여 value=1인 것을 리턴한다.
2. 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
*
* @author HEESOO
*
*/
class Solution {
public int singleNumber(int[] nums) {
HashMap<Integer, Integer> map=new HashMap<>();
for(int num:nums){ // 맵에 추가
map.put(num, map.getOrDefault(num,0)+1);
}
for(Map.Entry<Integer, Integer> entry:map.entrySet()){ // 개수가 하나인 것을 리턴
if(entry.getValue()==1) return entry.getKey();
}
return 0;
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 해시맵을 이용한다
- 해시맵을 사용함으로써 개수를 센 숫자를 다시 찾는데 걸리는 시간을 줄인다.
- getOrDefault()를 이용해 맵에 key가 저장되어 있지 않다면 0을 리턴하고, 여기다가 +1한다.
- map.entrySet()으로 해시맵을 순회한다. value가 1인 것은 해당 key(숫자)의 개수가 1인 것이므로 해당 key를 리턴한다.