260. Single Number III 很直覺的全部做xor答案以外會被消掉 接下來就是想辦法找出這兩數 這部分就有點卡住 xor出來該位值1代表兩數該位相異 依照該位將數列分成兩部分 因為同樣的數也會被分在一起 所以xor後就是答案 別問我怎麼想到的== 還沒看討論不知道有沒有更好的做法 class Solution { public: vector<int> singleNumber(vector<int>& nums) { int sum = 0; for(int n : nums){ sum ^= n; } int base = 1; while(!(sum & base)) base <<= 1; int even = 0, odd = 0; for(int n : nums){ if(n & base) even ^= n; else odd ^= n; } return {odd, even}; } }; -- 悠閒的 平凡的 瑣碎的 無意義的 https://i.imgur.com/sMJiZp3.jpg
-- ※ 發信站: 批踢踢實業坊(ptt-website.tw), 來自: 114.36.50.252 (臺灣) ※ 文章網址: https://ptt-website.tw/Marginalman/M.1717127870.A.21E
JIWP: 大師 05/31 12:04
sustainer123: 大師 05/31 12:05
DJYOSHITAKA: 好噁 05/31 12:11