코딩테스트
[leetcode] 136. Single Number
nayoon
2024. 6. 5. 01:44
최초 풀이 -> 정렬 후 맨 마지막이 정답이라 가정한 후 for문으로 인덱스 2씩 이동하면서 두 개의 수를 비교
최종 풀이 -> 비트연산자 ^를 사용함
^는 XOR 연산자로 이진수에서 대응되는 수가 같으면 0, 다르면 1을 반환한다.
최종 풀이(1ms)
class Solution {
public int singleNumber(int[] nums) {
int r = 0;
for(int i = 0; i < nums.length; i++) {
r = r ^ nums[i];
}
return r;
}
}
최초 풀이(7ms)
class Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);
int answer = nums[nums.length - 1];
for(int i = 0; i < nums.length - 1; i+=2) {
boolean result = nums[i + 1] == nums[i];
if (!result) {
answer = nums[i];
break;
}
}
return answer;
}
}