落单的数

给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。

样例
给出 [1,2,2,1,3,4,3],返回 4

挑战 
一次遍历,常数级的额外空间复杂度

package www.dxb.com;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
int []A = null;
int n = A[0];
for(int i=1;i<A.length;i++){
n = n^A[i];
}
System.out.println(n);
}

}

 这里主要采用异或运算即a^b^a=b

class Solution {
public:
/*
* @param A: An integer array
* @return: An integer
*/
int singleNumber(vector<int> A) {
// write your code here
//采用异或的操作可以解决这个问题
if(A.empty())return 0;
int n = A[0];
for(int i = 1;i != A.size();++i){
n = n^A[i];
}
return n;
}
};

posted @ 2019-04-01 22:47  党小板  Views(147)  Comments(0)    收藏  举报