只出現一次的數

2022-05-05 02:36:07 字數 882 閱讀 9663

問題:有n個數,其中只有乙個數出現一次,其他的都出現兩次,求這個數(空間複雜度為常數)

/*全部xor起來即可*/

#include#includeusing namespace std;

int main()

printf("%d\n",xor_sum);

return 0;}/*

1231 3 1

51 2 3 2 3

*/#include#includeusing namespace std;

int main()

printf("%d\n",xor_sum);

return 0;}/*

1231 3 1

51 2 3 2 3

*/

擴充套件:有n個數,其中只有兩個數隻出現一次,其他的都出現兩次,求這兩個數(空間複雜度為常數)

/*仿照前面的做法,得到兩個數的xor,然後開個陣列mp[31][31]維護每個數二進位制數字上各個1的聯絡,最後利用這個陣列將二者分離開*/

#include#includeusing namespace std;

const int maxn=31;

int main()}}

}}

int ans=0;

for(int i=0;i>i)&1)

}break;}}

printf("%d %d\n",ans,xor_sum^ans);

return 0;}/*

21 2

41 2 3 1

61 2 3 2 3 4

*/

只出現一次的數

給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其他所有元素均出現兩次。找出只出現一次的那兩個元素。示例 給定 nums 1,2,1,3,2,5 返回 3,5 注意 結果的順序並不重要,對於上面的例子 5,3 也是正確答案。你的演算法應該具有線性複雜度,你能否僅使用恆定的空間複雜度來實現它...

只出現一次的數

問題描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。解決思路 將陣列中元素全部異或,根據異或特點,出現兩次的元素異或後結果為0,陣列全部異或之後的結果就是只出現一次的那個元素。實現 int singlenumber vector int n...

陣列中只出現一次的數

首先看看題目要求 陣列 a中,除了某乙個數字 x之外,其他數字都出現了三次,而 x出現了一次。請給出最快的方法找到x。這個題目非常有意思,在本人部落格中有 位操作基礎篇之位操作全面總結 這篇文章介紹了使用位操作的異或來解決 陣列中其他數字出現二次,而x出現一次,找出x。有 這邊文章介紹了分組異或的方...