
문제 문제 링크
비어있지 않은 정수 배열 `nums`가 주어집니다. 이 배열에서 하나의 원소를 제외한 모든 원소는 두 번씩 나타납니다. 한 번만 나타나는 원소를 찾아 반환하세요.
입력
정수 배열 `nums`가 주어집니다.
예제 입력 1
nums = [2,2,1]
예제 입력 2
nums = [4,1,2,1,2]
출력
한 번만 나타나는 원소를 반환합니다.
예제 출력 1
1
예제 출력 2
4
풀이
문제 해결 방법
이 문제는 XOR 비트 연산을 사용하여 효율적으로 해결할 수 있습니다. 주요 해결 방법은 다음과 같습니다:
- XOR 비트 연산을 이용한 해결 방법:
- XOR 연산의 특성을 이용 (a ^ a = 0, a ^ 0 = a)
- 모든 원소를 XOR 연산하면 한 번만 나타나는 원소만 남음
- 해시 테이블을 이용한 해결 방법:
- 각 원소의 등장 횟수를 해시 테이블에 저장
- 한 번만 나타나는 원소를 찾아 반환
XOR 방법의 시간 복잡도는 O(N)이고, 공간 복잡도는 O(1)입니다.
코드
class Solution {
public:
int singleNumber(vector& nums) {
int result = 0;
for (int num : nums) {
result ^= num;
}
return result;
}
};
'문제풀이 > LeetCode' 카테고리의 다른 글
| [LeetCode] Rotate Array (C++) (0) | 2025.04.14 |
|---|---|
| [LeetCode] Intersection of Two Arrays II (C++) (0) | 2025.04.14 |