乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o(n),空間複雜度是o(1)。
示例 1:
輸入:nums = [4,1,4,6]示例 2:輸出:[1,6] 或 [6,1]
輸入: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 重要的事情說三遍!審題一定要認真,拿到題目忽略了這個條件,浪費了大部分時間在這上面。其實題目給的陣列都是排序好的,也就是說,重複的元素都是在相鄰位置...