尋找單身狗數

2021-10-23 15:47:18 字數 1010 閱讀 4965

方法一:異或求單身狗

原理:相同兩數異或為0

把所有數全部異或。

異或的結果找1出現的位置的,然後將所有這個位置為1的數相異或,就是第乙個「單身狗」,其他的相異或則是第二個。

void

finddog

(int

* arr,

int n,

int* num)

for(i =

0; i <32;

++i)

}for

(i =

0; i < n;

++i)

}void

main()

;int arr=

;int sz =

sizeof

(arr)

/sizeof

(arr[0]

);finddog

(arr, sz, num)

;printf

("%d %d"

, num[0]

, num[1]

);}

方法二

先排序,然後一一比較

void

bsort

(int

*arr,

int n)

//原有陣列氣泡排序}}

}void

finddog

(int

*arr,

int n,

int*num)

//else}}

void

main()

;int arr=

;int sz =

sizeof

(arr)

/sizeof

(arr[0]

);finddog

(arr, sz, num)

;printf

("%d %d"

, num[0]

, num[1]

);}

尋找單身狗

給出2 n 1 個的數字,除其中乙個數字之外其他每個數字均出現兩次,找到這個數字 對於該問題,我們直觀得想到,暴力遍歷整個陣列,逐一得排查陣列元素,直到找到那個單獨的數字。這個方法也很容易實現,但是其時間複雜度為o n 2 其效率並不高,不宜採用。另一種方法也很容易想到,我們可以先對整個陣列排序,然...

1040尋找單身狗

時間限制 1 sec 記憶體限制 128 mb 提交 159 解決 51 統計杜陵韋固,元和二年旅次宋城遇一老人倚布囊,坐於階上,向月撿書。固問所尋何書,答曰 天下之婚牘耳。又問囊中何物,答曰 赤繩子耳。以系夫妻之足,及其生,則潛用相繫,雖讎敵之家,貴賤懸隔,天涯從宦,吳楚異鄉,此繩一系,終不可逭。...

尋找 單身數

乙個有n個數的陣列裡,每個數字都出現兩次,現在取出乙個數,根據剩下的數字,猜測取出的數的值 要求時間複雜度為n,空間複雜度為1 解題圖示 實現 class solution def singlenumber self,nums type nums list int rtype int result ...