力扣 645 錯誤的集合 位運算

2021-10-05 10:26:58 字數 755 閱讀 6845

思路:做法很多,只考慮空間o(1

)o(1)

o(1)

的方法。設答案為a、b

a、ba、

b,陣列的異或和為sum

sumsu

m,再對所有的1

<=i

<=n

1<=i<=n

1<=i

<=n

做一遍sum

xori

sum\ xor\ i

sumxor

i,得到的結果就是axo

rba\ xor\ b

axor

b,現在考慮怎麼把他們分離出來。我們找到axo

rba\ xor\ b

axor

b的為1

11的最低位,然後依據此位把原陣列和[1,

n][1,n]

[1,n

]分成兩個部分,每個部分單獨做一次異或和就可以得到a、b

a、ba、

b了,現在只需要考慮它們的順序問題,顯然遍歷一遍陣列即可。

class

solution

vector<

int> ans

;for

(int i=

0;ireturn ans;}}

;

從零開始刷力扣(五) 645 錯誤的集合

題目描述 集合s包含從1到n的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複 給定乙個陣列nums代表了集合s發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回。示例1 輸...

645 錯誤的集合

鏈結 集合 s 包含從1到 n 的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複。給定乙個陣列 nums 代表了集合 s 發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回...

645 錯誤的集合

集合 s 包含從1到 n 的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複。給定乙個陣列 nums 代表了集合 s 發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回。示例...