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?
public class Solution {
public int singleNumber(int[] nums) {
if(nums.length==1){
return nums[0];
}else if(nums.length%2 == 0){
return 0;
}else{
Arrays.sort(nums);
int n = nums.length-1;
for(int i=0;i<n;i+=2){
if(nums[i] != nums[i+1]){
return nums[i];
}
}
return nums[n];
}
}
}
总结:时间复杂度为O(N),由题意分析,本题要求是有一个数组,里面都是2个2个重复的元素,只有1个为不是重复的,找出哪一个,首先应该想到把一些边界问题分析出来,再应该想到的是,对数组进行排序,对一个排序好的数组干什么都是很方便的。之后在进行一个一个比较,匹配不成功的肯定是要找到的那一个。