传送门
nowcoder
leetcode
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。
请找出这两个只出现一次的数字。
C++ 代码 - nowcoder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
class Solution { public: void FindNumsAppearOnce(vector<int> nums, int* num1,int *num2) { if (nums.size() < 2) return;
int diff = 0; for (int x : nums) { diff ^= x; } diff = diff & (-diff); num1[0] = 0, num2[0] = 0; for (int x : nums) { if ((x & diff) == 0) { num1[0] ^= x; } else { num2[0] ^= x; } } } };
|
C++ 代码 - leetcode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
class Solution { public: vector<int> sockCollocation(vector<int>& nums) { if (nums.size() < 2) return vector<int>();
int diff = 0; for (int i = 0; i < nums.size(); i ++) { diff ^= nums[i]; } int lowbit = 1; while ((lowbit & diff) == 0) lowbit <<= 1;
int num1 = 0, num2 = 0; for (int x : nums) { if ((x & lowbit) == 0) { num1 ^= x; } else { num2 ^= x; } }
return vector<int>{ num1, num2 }; } };
|