137 只出現一次的數字 II

2021-09-23 15:35:46 字數 1153 閱讀 9581

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。

你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

輸入: [2,2,3,2]

輸出: 3

示例 2:

輸入: [0,1,0,1,0,1,99]

輸出: 99

使用python3, 用了額外的空間集合 set(),所以不符合題目要求

class solution:

def singlenumber(self, nums: list[int]) -> int:

cnt = set()

for i in nums:

cnt.add(i)

return (3 * sum(cnt) - sum(nums))//2

使用位運算.

這個題其實就是求,在其他數都出現k次的陣列中有乙個數隻出現一次,求出這個數。

而上面那個k次的是有通用解法的。

用乙個32維的陣列,訪問原陣列中的數,用這個32維的陣列儲存這些數裡面第0位1的個數,第1位1的個數。。。第31位1的個數。

假如第0位1的個數是k的倍數,那麼要求的這個數在該位一定是0,若不是k的倍數,那麼要求的這個數在該位一定是1,第1位的1一直到第31位的1的個數同理。

參考:leetcode 137:只出現一次的數字 ii(最詳細的解法!!!)

137 只出現一次的數字 II

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 示例 2 1.二進位制下不考慮進製的加法 本題為 136.single number 的拓展,136 題中我們用到了...

137 只出現一次的數字 II

題目描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,3,2 輸出 3示例 2 輸入 0,1,0,1,0,1,99 輸出 99題解 法一 統計所有...

137 只出現一次的數字 II 詳解

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,3,2 輸出 3 示例 2 輸入 0,1,0,1,0,1,99 輸出 99 與leetcode 136...