Daily LeetCode Challenge - 137. Single Number II

Min Young Kim·2023년 7월 4일
0

algorithm

목록 보기
186/198

Problem From.

https://leetcode.com/problems/single-number-ii/

오늘 문제는 주어진 array nums 에서 나오는 각각의 숫자는 1번만 나오거나 3번만 나오게 되어있다. 이 중에서 1번만 나오는 숫자를 반환하는 문제였다.

이 문제는 bit manipulation 을 이용하여 풀 수 있었는데, once 와 twice 라는 변수를 두고, 한번만 나온 비트는 once 에 두번 이상 나오면 twice 에 마스킹을 해두고 세번째에 나오면 twice 가 사라질 수 있도록 하였다. 그렇게 해서 마지막에 남은 once 를 반환해주면 되었다.

class Solution {
    fun singleNumber(nums: IntArray): Int {
        var once = 0
        var twice = 0
        for (num in nums) {
            once = (once xor num) and twice.inv()
            twice = (twice xor num) and once.inv()
        }
        return once
    }
}
profile
길을 찾는 개발자

0개의 댓글