乙個陣列中只有兩個數字是只出現一次

2021-09-26 06:35:07 字數 727 閱讀 4360

乙個陣列中只有兩個陣列是只出現一次的,其他所有數字都是只出現了兩次,找出這兩個數字

首先,我們看到陣列中找只出現一次的數字我們都會想到用異或,但是異或出來的結果是兩個數的異或結果,這就給我們造成無法通過這個異或結果來區分這兩個數.但是這兩個數是不一樣的,這就使得異或結果中必然有1的存在.我們可通過這個1來劃分.

#include 

#include

void

find_diff_num

(int

*arr,

int sz,

int* px,

int* py)

for(i =

0; i <

32; i++)}

for(i =

0; i < sz; i++

)else}}

intmain()

;int sz =

sizeof

(arr)

/sizeof

(arr[0]

);int n1 =0;

int n2 =0;

find_diff_num

(arr, sz,

&n1,

&n2)

;printf

("%d %d"

, n1, n2)

;system

("pause");

return0;

}

陣列中只出現一次的兩個數字

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。你可以假設這兩個數字一定存在。樣例輸入 1,2,3,3,4,4 輸出 1,2 解決方案 異或 兩個相同的元素異或 設出現一次的數字分別為x和y 1,先用乙個sum 將整個陣列遍歷一遍同時異或該陣列元素與sum...

陣列中只出現一次的兩個數字

我們知道如果出現一次的數只有1個,其餘的都出現了兩次,那麼,直接異或一遍就可以了,但是,此題有2個 所以,異或一遍的結果為x y,即出現一次的兩個數異或的結果,從s x y 0,知道s的某位為1,x與y的在s為1的位不一樣,這樣就可以將數分為兩個集合,與s相同位為1的和s相同位為0的,x與y一定在兩...

陣列中只出現1次的兩個數字

乙個整型陣列裡除了2個數字分別出現1次之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 如果我們能把問題中的陣列分成2個子陣列,使得每個子陣列中都只有乙個唯一的元素以及很多成對的元素,那麼我們就可以求出每個子陣列中唯一的元素,最終就可以得到...