标签:
Given an array of numbers nums
, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.
For example:
Given nums = [1, 2, 1, 3, 2, 5]
, return [3, 5]
.
Note:
[5, 3]
is also correct.Runtime: 16ms
1 class Solution { 2 public: 3 vector<int> singleNumber(vector<int>& nums) { 4 vector<int> result; 5 6 int temp = 0; 7 for(int i = 0; i < nums.size(); i++) 8 temp ^= nums[i]; 9 10 int mark = 1; 11 while((temp & mark) != mark) 12 mark <<= 1; 13 14 int x = 0; 15 for(int i = 0; i < nums.size(); i++){ 16 if(nums[i] & mark) 17 x ^= nums[i]; 18 } 19 20 int y = temp ^ x; 21 22 result.push_back(x); 23 result.push_back(y); 24 return result; 25 } 26 };
标签:
原文地址:http://www.cnblogs.com/amazingzoe/p/4870609.html