題目描述:乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。
輸入:輸入的第一行包括乙個整數n(1<=n<=1000)。
接下來的一行包括n個整數。
輸出:可能有多組測試資料,對於每組資料,
找出這個陣列中的兩個只出現了一次的數字。
輸出的數字的順序為從小到大。
樣例輸入:
62 3 9 3 7 2
樣例輸出:7 9
/ 這道題我用的暴力解法,排序加查詢,居然也過了。。。。。所以沒什麼參考價值,可以不用看**了。
大神們的做法就很獨到,做二次位亦或運算。第一次所有值統一做位運算,如果所有值都有兩個,位運算的結果為0。明顯有兩個出現一次的元素,所以不為0,兩個不相同元素不相同的那個位肯定為1,所以兩個元素有乙個元素那個位為0,另乙個為1。
第二次運算就講所有元素分為兩類,一類是此位為0,乙個是1,分別得出的結果就是要求的值了,複雜度為n
#include#include#includeusing namespace std;
int v[1001];
int main()
{ int n,i;
while(cin>>n&&n!=0)
{for(i=0;i
九度題目1393 合併兩個排序序列
題目描述 輸入兩個遞增的序列,輸出合併這兩個序列後的遞增序列。輸入 每個測試案例包括3行 第一行為1個整數n 1 n 1000000 表示這兩個遞增序列的長度。第二行包含n個整數,表示第乙個遞增序列。第三行包含n個整數,表示第二個遞增序列。輸出 對應每個測試案例,輸出合併這兩個序列後的遞增序列。樣例...
找出陣列中兩個只出現一次的數字
題目 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是 o n 空間複雜度是 o 1 解題思路 這個題目的突破口在 題目為什麼要強調有乙個數字出現一次,其他的出現兩次?我們想到了異或運算的性質 任何乙個數字異或它自己都等於 0。也就是說,如...
找出陣列中兩個只出現一次的數字
問題描述 乙個陣列中除了兩個數字之外,其餘數字均出現了兩次 或偶數次 請寫出程式查詢出這兩個只出現一次的數字,要求時間複雜度為o n 空間複雜度為o 1 問題分析 這是一道很新穎的關於位運算的面試題。首先考慮這個問題的乙個簡單版本 乙個陣列中除了乙個數字之外,其餘的數字均出現兩次,請寫程式找出這個出...