Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
题意:给定整数数组,除了某个数,其他的数都出现了两次。要求O(n)时间,O(1)空间
思路:相等的两个数异或为0,0与该唯一数异或为数字本身
代码:
public class Solution {
public int singleNumber(int[] nums) {
if(nums == null || nums.length == 0){
return 0;
}
int result = nums[0];
for(int i = 1;i < nums.length;++i){
result = result ^ nums[i];
}
return result;
}
}