程序员

剑指offer----数组中只出现一次的数

2018-02-09  本文已影响0人  qming_c

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        if(array.length < 2){
            return;
        }
        int n = 0;
        for(int i = 0; i < array.length; i++){
            n ^= array[i]; 
        }
        int last = n - ((n - 1) & n);
        for(int i = 0; i < array.length; i++){
            if( ( last & array[i]) == 0){
                num1[0] ^= array[i];
            }else{
                num2[0] ^= array[i];
            }
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读