[JAVA/LeetCode] Top 100 Liked Question: 136. Single Number

👀 문제

https://leetcode.com/problems/single-number/

👊 도전

1. 설계

  1. 해시맵을 이용하여 숫자별 개수를 센다.
  2. 해시맵을 확인하여 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. 설명

  1. 해시맵을 이용한다
    • 해시맵을 사용함으로써 개수를 센 숫자를 다시 찾는데 걸리는 시간을 줄인다.
    • getOrDefault()를 이용해 맵에 key가 저장되어 있지 않다면 0을 리턴하고, 여기다가 +1한다.
    • map.entrySet()으로 해시맵을 순회한다. value가 1인 것은 해당 key(숫자)의 개수가 1인 것이므로 해당 key를 리턴한다.

👏 해결 완료!