标签:
题目链接:https://leetcode.com/problems/single-number-iii/
题目:
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.public class Solution {
public int[] singleNumber(int[] nums) {
int[] single = new int[2];
int[] wei = new int[32];
int yhResult = 0;
for(int i=0; i<nums.length; i++) {
yhResult ^= nums[i];
}
for(int i=0; i<32; i++) {
if((yhResult & 1<<i) != 0) {<span style="white-space:pre"> </span>//如果异或结果的某位为1,说明两个单数在该位是不同的
for(int j=0; j<nums.length; j++) {
if((nums[j] & 1<<i) != 0)<span style="white-space:pre"> //按该位相同与不同,分两组</span>分别异或,可直接得出结果元素
single[0] ^= nums[j];
else
single[1] ^= nums[j];
}
break;
}
}
return single;
}
}版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/yangyao_iphone/article/details/47983607