剑指 Offer 56 - I. 数组中数字出现的次数
这个我想到啦!!!最近被位运算折磨的太惨了,想到了同一数同一位运算符操作两次还原的问题。于是就想到了这个办法,但是对位运算掌握 太差了,只好看题解。。。想到算法已经很开心啦!位运算要学习,不能拖。另外题目条件要看仔细,全用到!
题解:
class Solution {
public:
vector singleNumbers(vector& nums) {
int ret = 0;
for (int n : nums)
ret ^= n;
int div = 1;
while ((div & ret) == 0)
div <<= 1;
int a = 0, b = 0;
for (int n : nums)
if (div & n)
a ^= n;
else
b ^= n;
return vector{a, b};
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/solution/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。