LeetCode 260. 只出现一次的数字 III(位运算)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 260. 只出现一次的数字 III(位运算)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個整數數組 nums,其中恰好有兩個元素只出現一次,其余所有元素均出現兩次。 找出只出現一次的那兩個元素。
示例 :輸入: [1,2,1,3,2,5] 輸出: [3,5]注意:
結果輸出的順序并不重要,對于上面的例子, [5, 3] 也是正確答案。
你的算法應該具有線性時間復雜度。你能否僅使用常數空間復雜度來實現?
類似題目
LeetCode 137. 只出現一次的數字 II(位運算)
LeetCode 136. 只出現一次的數字(異或^)
2. 解題
- 先將所有數字異或,等同于那2個不同的數異或 bit
- 在將上面結果取負并與自己與 bit = bit & -bit,得到 bit 為1的最低位(即那2個數不同的二進制位)
- 在將給的數組每個數與 bit &,將數組分成2部分,2部分各自做異或^ ,即可得到2個數
關于第二步的舉例:8,13
1000
1101
^
0101 bit
bit & -bit
0001
假如 bit = 1100
bit & -bit = 0100(得到的是最低位的1)
總結
以上是生活随笔為你收集整理的LeetCode 260. 只出现一次的数字 III(位运算)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络cr什么意思,现在网络上的“C
- 下一篇: sql随机抽取数据50条_MySQL中随