[비트조작] Leet Code 136. Single Number

su_y2on·2022년 1월 19일
0

알고리즘

목록 보기
11/47
post-thumbnail

리트코드 136번
리스트중 1개만 있는 숫자 찾기



풀이1

defaultdict을 사용해서 딕셔너리로 개수를 저장해놓자!
그닥 참신하지는 않지만 그래도 확실하고 쉬운 방법

class Solution:
    def singleNumber(self, nums) -> int:
        pair = collections.defaultdict(int)

        for num in nums:
            pair[num] += 1

        for key in pair:
            if pair[key] == 1:
                return key



풀이2

class Solution:
    def singleNumber(self, nums) -> int:
        for i in range(1,len(nums)):
            nums[0] ^= nums[i] # a xor a = 0 , 0 xor a = a

        return nums[0]
  • 같으면 0 다르면 1을 반환하는 XOR연산의 특징을 이용 : 이때 0 xor a처럼 0과 연산을 하면 다를때 a가 나온다👍
  • 결국 모든 nums의 요소를 xor하면 같은건 0이 나오고 다른 것만 남아서 결국 그 수가 나오게된다

0개의 댓글