8_6尋找奇數(shù)出現(xiàn)2

給定一個(gè)整型數(shù)組arr,其中有兩個(gè)數(shù)出現(xiàn)了奇數(shù)次,其他的數(shù)都出現(xiàn)了偶數(shù)次,找到這兩個(gè)數(shù)。要求時(shí)間復(fù)雜度為O(N),額外空間復(fù)雜度為O(1)。

給定一個(gè)整形數(shù)組arr及它的大小n,請返回一個(gè)數(shù)組,其中兩個(gè)元素為兩個(gè)出現(xiàn)了奇數(shù)次的元素,請將他們按從小到大排列。

測試樣例:
[1,2,4,4,2,1,3,5],8
返回:[3,5]

class OddAppearance {
    public:
        vector<int> findOdds(vector<int> arr, int n) {
            // write code here
            int diff = arr[0];        
            for(int i=1; i<n; ++i){
                diff ^= arr[i];
            }
            int tmp = diff, num = 0;
            while(tmp != 0){
                if(1 == (tmp & 1)) break;
                tmp >>= 1;
                ++num;
            }
            int a = 0;
            for(int i=0; i<n; ++i){
                if(((arr[i]>>num) & 1) == 1){
                    a ^= arr[i];
                }
            }
            int b = a^diff;
            vector<int> res(2, 0);
            if(a<b){
                res[0] = a;
                res[1] = b;
            }else{
                res[0] = b;
                res[1] = a;
            }
            return res;
        }
};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容