260. Single Number III
- Total Accepted: 49443
- Total Submissions: 103739
- Difficulty: Medium
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:
- The order of the result is not important. So in the above example,
[5, 3]
is also correct. - Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?
public class Solution {
public int[] singleNumber(int[] nums) {
int ans = 0;
int a[] = new int [2];
int index = 1;
int len = nums.length;
for(int i=0;i<len;i++){
ans ^= nums[i];
}
index = ans & (-ans);
for(int i=0;i<len;i++){
if((nums[i] & index) == 0)
a[0] ^= nums[i];
else
a[1] ^= nums[i];
}
return a;
}
}