方法一:異或求單身狗
原理:相同兩數異或為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 ...