题目:
Given an array of integers, every element appears twiceexcept for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
代码一:
public class Solution {
public int singleNumber(int[] nums) {
if(nums.length==1){//长度为1,直接输出第一个数即可
return nums[0];
}else{
Arrays.sort(nums);//对输入的数排序
if(nums[nums.length-2]!= nums[nums.length-1]){//单个数在最后,直接输出最后一个数即可
return nums[nums.length-1];
}else{
int result=0;
for(int i=0,j=1;i<nums.length-1;){//单个数在中间和头部的情况
if(nums[i] == nums[j]){
i=i+2;
j=j+2;
}else{
result = nums[i];
break;
}
}
return result;
}
}
}
}
代码二:
利用异或,相异为1,相同为0,0异或一个数为那个数本身
public class Solution {
public
int
singleNumber(
int
[] A) {
int
num =
0
;
for
(
int
i=
0
;i<A.length;i++){
num= num^A[i];
}
return
num;
}