classSolution { publicint[] singleNumber(int[] nums) { intsum=0, k = -1; for (int i : nums) sum ^= i; for (inti=31; i >= 0 && k == -1; i--) { if (((sum >> i) & 1) == 1) k = i; } int[] ans = newint[2]; for (int i : nums) { if (((i >> k) & 1) == 1) ans[1] ^= i; else ans[0] ^= i; } return ans; } }
C++ 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
classSolution { public: vector<int> singleNumber(vector<int>& nums){ int sum = 0, k = -1; for (int num : nums) sum ^= num; for (int i = 31; i >= 0 && k == -1; i--) { if ((sum >> i) & 1) k = i; } vector<int> ans(2, 0); for (int num : nums) { if ((num >> k) & 1) ans[1] ^= num; else ans[0] ^= num; } return ans; } };
Python 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13
classSolution: defsingleNumber(self, nums: List[int]) -> List[int]: sum_val, k = 0, -1 for num in nums: sum_val ^= num for i inrange(31, -1, -1): if (sum_val >> i) & 1: k = i break ans = [0, 0] for num in nums: if (num >> k) & 1: ans[1] ^= num else: ans[0] ^= num return ans
TypeScript 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13
functionsingleNumber(nums: number[]): number[] { let sum = 0, k = -1; for (const num of nums) sum ^= num; for (let i = 31; i >= 0 && k === -1; i--) { if (((sum >> i) & 1) === 1) k = i; } constans: number[] = [0, 0]; for (const num of nums) { if (((num >> k) & 1) === 1) ans[1] ^= num; else ans[0] ^= num; } return ans; };