只出現一次的數字3

2021-10-16 09:16:48 字數 1088 閱讀 5048

本題會使用到異或的方法,關於異或運算子及其在c語言中的使用詳見此文章。

第一步:因為異或是相同為0,相異為1,題目中說到,整個陣列中只有兩個數出現了一次,其餘全部數均出現兩次。所以把所有元素都進行異或操作,相同的元素異或為0,所以最終異或的結果一定是,那兩個不同元素進行運算結果。假設那兩個不同的元素為x1和x2,其結果一定=x1^x2

第二步:這一步就應該要分離出x1和x2。這裡舉例說明

//第一步:因為異或是相同為0,相異為1,題目中說到,整個陣列中只有兩個數出現了一次,其餘全部數均出現兩次。所以把所有元素都進行異或操作,相同的元素異或為0,所以最終異或的結果一定是,那兩個不同元素進行運算結果

int m=0;

while

(m<32)

//找出ret1的第m位為1

int x1=0;

int x2=0;

for(

int i=

0;i)else

}//找到第m位後,再次探查陣列,如果某個數的第m位為,則為x1,反之則為x2

int* retarr=

(int*)

malloc

(sizeof

(int)*

2); retarr[0]

=x1;

retarr[1]

=x2;

*returnsize=2;

return retarr;

}

只出現一次的數字

1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4核心思想 對list排序,然後遍歷 class ...

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素 例 1,2,2 1 方法一 異或 數字1 數字2 每一位如果相同就為0,不同為1 1 1 0 1 0 1 0 1 1 0 0 0 class solution def singlenumber se...