标签:
题目链接: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