背景知識:
若x是任意整數, 則有:
x^x=0;
x^0=x;
三道題:
乙個陣列,其中只有乙個數隻出現一次,其他數字均出現兩次,求只出現一次的數
答:將所有數異或一遍,最終結果即所求
乙個陣列,其中有兩個數隻出現一次,其他數字均出現兩次,求只出現一次的數
答:記只出現一次的數分別為a, b;
所有數字異或和的值為a^b!=0;
記a^b的二進位制表示在inx位上為1;
陣列中在inx位上為1的數字的異或和為a, 陣列在inx位上為0的數字的異或和為b;
乙個陣列,其中只有1個數只出現一次,其他數均出現三次;
cnt[i]記錄二進位制表示在i位上為1的數字的出現次數;
出現一次的數字的每一位上1出現的次數均模3等於1;
然後將模三等於1的位置為1就是答案
問題一
class
solution
};
問題二
class
solution
vector<
int> vec;
vec.
push_back(0
);vec.
push_back(0
);int cnt, t;
for(
int i=
0; isize()
; i++)if
(t&1
) vec[0]
^=nums[i]
;else vec[1]
^=nums[i];}
return vec;}}
;
問題三
class
solution
}for
(int i=
0; i<=
32; i++
)return ans;}}
;
陣列中數字出現的次數
題目 乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 示例 1 輸入 nums 4,1,4,6 輸出 1,6 或 6,1 示例 2 輸入 nums 1,2,10,4,1,4,3,3 輸出 2,10 或 1...
陣列中數字出現的次數
陣列中數字出現的次數 乙個整型陣列nums裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 示例 1 輸入 nums 4,1,4,6 輸出 1,6 或 6,1 示例 2 輸入 nums 1,2,10,4,1,4,3,3 輸出 2,...
陣列中數字出現的次數
乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。define crt secure no warnings include include include 異或 intcontinuousxor int arr,int sz return ret ...