剑指 Offer 56 - I. 数组中数字出现的次数

 

方法:分组异或

剑指 Offer 56 - I. 数组中数字出现的次数

剑指 Offer 56 - I. 数组中数字出现的次数

剑指 Offer 56 - I. 数组中数字出现的次数

 1 class Solution {
 2 public:
 3     vector<int> singleNumbers(vector<int>& nums) {
 4         int res = 0;
 5         for(int &num: nums) {
 6             res ^= num;
 7         }
 8 
 9         int a = 0, b = 0;
10         int k = 1;
11         while((k & res) == 0) { 
12             k = k << 1;
13         }
14 
15         for(int &num: nums) {
16             if((k & num) == 0) {
17                 a ^= num;
18             } else {
19                 b ^= num;
20             }
21         }
22 
23         return vector<int>({a, b});
24     }
25 };

 

参考

力扣官方题解 - 数组中数字出现的次数

相关文章:

  • 2021-06-07
  • 2021-11-06
  • 2021-05-30
  • 2022-01-15
  • 2022-01-19
  • 2021-10-24
猜你喜欢
  • 2021-05-24
  • 2021-07-28
  • 2021-08-05
  • 2021-10-17
  • 2022-02-07
相关资源
相似解决方案