Loading

剑指 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 };

 

参考

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

posted @ 2020-11-13 17:38  拾月凄辰  阅读(85)  评论(0编辑  收藏  举报