코딩테스트

[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;
    }
}