Leetcode 137.只出現一次的數字 II【二進制位處理】

問題描述

給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。

說明:

你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

解題報告

參考 【每日算法Day 72】谷歌面試題:又雙叒叕是位運算,最詳細的自動機推導過程。解釋非常清楚。

實現代碼

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ans = 0,counter=0;
        for (int i = 0; i < 32; ++i) {
            counter = 0;
            for (auto x : nums) {
                counter += (x>>i)&1;
            }
            ans |= (counter%3)<<i;
        }
        return ans;
    }
};

參考資料

[1] Leetcode 137.只出現一次的數字 II
[2] 【每日算法Day 72】谷歌面試題:又雙叒叕是位運算,最詳細的自動機推導過程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章