릿코드 Single Number

1. 릿코드 leetcode Single Number

2. 문제

Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.

Follow up: Could you implement a solution with a linear runtime complexity and without using extra memory?

2.1. Example 1:

Input: nums = [2,2,1]
Output: 1

2.2. Example 2:

Input: nums = [4,1,2,1,2]
Output: 4

2.3. Example 3:

Input: nums = [1]
Output: 1

2.4. Constraints:

1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
Each element in the array appears twice except for one element which appears only once.

3. 컴퓨팅 사고

  • Map을 사용하여 개수를 체크한 후 value값이 1인 경우 return 결과값을 도출하면 되는 간단한 문제였습니다.

4. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.HashMap;
import java.util.Map;
public class leetcode_single_number {
public static void main(String[] args) {
singleNumber(new int[]{2,2,1});
singleNumber(new int[]{4,1,2,1,2});
}
static int singleNumber(int[] nums) {
Map<Integer, Integer> m = new HashMap<>();
int answer = 0;
for(int i=0; i<nums.length; i++) {
m.merge(nums[i], 1, Integer::sum);
}
for(Integer key : m.keySet()){
Integer value = m.get(key);
if(value == 1){
answer = key;
System.out.println(key);
break;
}
}
return answer;
}
}