九度 題目1256 找出兩個只出現了一次的數字

2021-07-31 12:30:34 字數 729 閱讀 5524

題目描述:乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。

輸入:輸入的第一行包括乙個整數n(1<=n<=1000)。

接下來的一行包括n個整數。

輸出:可能有多組測試資料,對於每組資料,

找出這個陣列中的兩個只出現了一次的數字。

輸出的數字的順序為從小到大。

樣例輸入:

6

2 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 問題分析 這是一道很新穎的關於位運算的面試題。首先考慮這個問題的乙個簡單版本 乙個陣列中除了乙個數字之外,其餘的數字均出現兩次,請寫程式找出這個出...