劍指Offer 陣列中唯一只出現一次的數字

2021-09-21 07:23:42 字數 505 閱讀 3367

題目:在乙個陣列中除乙個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。

思路:我們把陣列中所有數字的二進位制表示的每一位都加起來。如果某一位的和能被3整除,那麼那個只出現一次的數字二進位制表示中對應的那一位是0;否則就是1。

**如下:

#include#includeusing namespace std;

int findnum(const vector&vec);

for(int i=0;i=0;--i)

return res;

}int main();

cout《這種解法的時間效率是o(n)。我們需要乙個長度為32的輔助陣列儲存二進位制表示的每一位的和。由於陣列的長度是固定的,因此空間效率是o(1)。該解法比其他兩種直觀的解法效率都高:(1)我們很容易就能從排序的陣列中找到只出現一次的數字,但排序需要o(nlogn)時間;(2)我們也可以用乙個雜湊表來記錄陣列中每個數字出現的次數,但這個雜湊表需要o(n)的空間。

劍指Offer 陣列中唯一只出現一次的數字

在乙個陣列中除了乙個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。你可以假設滿足條件的數字一定存在。思考題 如果要求只使用 o n 的時間和額外 o 1 的空間,該怎麼做呢?樣例輸入 1,1,1,2,2,2,3,4,4,4 輸出 3 import sys class solu...

劍指offer 陣列 陣列中只出現一次的數字

思路 借用列表中的刪除元素功能。coding utf 8 class solution 返回 a,b 其中ab是出現一次的兩個數字 def self,array write code here list for e in array if e not in list else del list li...

劍指offer (陣列)陣列中只出現一次的數字

1 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這1個只出現一次的數字。要求時間複雜度為o n 控制項複雜度為o 1 2 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度為o n 控制項複雜度為o 1 1 當陣列中只存...