您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“LeetCode如何求數組中數字出現的次數”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“LeetCode如何求數組中數字出現的次數”這篇文章吧。
在一個數組 nums 中除一個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。
輸入:nums = [3,4,3,3]
輸出:4
輸入:nums = [9,1,7,9,7,9,7]
輸出:1
O(32) == O(1)
, 所以總體復雜度仍為 O(N)class Solution:
def singleNumber(self, nums: List[int]) -> int:
res = 0
for i in range(32):
# 當前統計的位數為第i位
# 假設i==1, 對應的mask就是0b000...00010 (共32位, 高位全為0)
mask = 1 << i
cnt = 0
for x in nums:
if x & mask:
# 如果這個數字與mask相與的結果為1, 則說明其當前位為1, 累加到次數中
cnt += 1
if cnt % 3 == 1:
# 如果次數為1, 則說明出現一次的數字在這一位上為1, 將最終結果或上當前mask即可
res |= mask
# 當然也可以選擇結果加上mask, 因為每個mask都是只有一位為1且各不相同
# res += mask
return res
以上是“LeetCode如何求數組中數字出現的次數”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。