《LeetCode筆記95》 陣列中數字出現的次數

2021-10-24 08:18:18 字數 893 閱讀 1914

乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o(n),空間複雜度是o(1)。

示例 1

輸入:nums = [4,1,4,6]

輸出:[1,6] 或 [6,1]

示例 2:

輸入:nums = [1,2,10,4,1,4,3,3]

輸出:[2,10] 或 [10,2]

限制:

2 <= nums.length <= 10000

忽略空間限制,用字典

分組異或

class solution:

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

n = len(nums) #假設不重複的數為a、b

x = 0

for i in range(n):

x ^= nums[i] #x等a^b

h = 1

while(x & h == 0):

h <<= 1 #找出x第乙個為1的那位,a、b兩數在改為上不相等

a = 0

b = 0

for num in nums:

if num&h==0: #根據該為分組求a、b

a ^= num

else:

b ^= num

return [a, b]

leetcode筆記之陣列

陣列要注意越界問題 一般轉化為有序,但是如果是返回位置而不是數的集合,就要用到hashtable 1.兩數之和 陣列無序,返回位置 1.申請乙個hash table unordered maphash 2.遍歷陣列,令num target nums i 2.1.如果num已經在hash map中了,...

c Chapter9 5 陣列小結

1.陣列是可以在記憶體中連續儲存多個元素的結構 陣列中所有元素必須屬於相同的資料型別 int nums 該陣列的型別是int 2.陣列必須先宣告,然後才能使用 陣列的宣告只是為該陣列留出記憶體空間 3.陣列的元素通過陣列下標訪問 一維陣列可以用乙個迴圈動態初始化,二維陣列可以用巢狀迴圈動態地初始化 ...

LeetCode筆記 陣列(2)

給定乙個排序好的陣列,在原始陣列中刪除掉重複的元素,使得每個元素只出現一次,返回最終陣列的長度。問題記錄 1.sorted sorted sorted 重要的事情說三遍!審題一定要認真,拿到題目忽略了這個條件,浪費了大部分時間在這上面。其實題目給的陣列都是排序好的,也就是說,重複的元素都是在相鄰位置...