Re: [闲聊] 每日leetcode

楼主: ray90514 (读书人)   2024-05-31 11:57:48
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};
}
};
作者: JIWP (JIWP)   2024-05-31 12:04:00
大师
作者: sustainer123 (caster)   2024-05-31 12:05:00
大师
作者: DJYOSHITAKA (Evans)   2024-05-31 12:11:00
好恶
作者: orangeNoob (橘子色的肥肥)   2024-05-31 13:01:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com