题目:给一个数组,返回里面唯一没有重复的数字。
解题思路:先将这个数组排序,用的是Arrays.sort,其实可以自己用快排来实现,只是学得不够好,只好用系统提供的方法,排序以后,循环一边,首先如果i==nums.length-1,直接return nums[i],如果i和i+1相等就i++,否则返回nums[i]的值,为了不报错在循环外面写一个return 0.
附上代码:
public class Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
if(i==nums.length-1)return nums[i];
if(nums[i]==nums[i+1]){
i++;
}else if(nums[i]!=nums[i+1]){
return nums[i];
}
}
return 0;
}
}
再次更新,学到一个新知识点,A XOR A=0,就是一个数异或其本身为0 因为A XOR A = 0,且XOR运算是可交换的,于是,对于实例{2,1,4,5,2,4,1}就会有这样的结果:
(2145241) => ((22)(11)(44)(5)) => (000^5) => 5
附上代码:
int singleNumber(int A[], int n) {
int result = 0;
for (int i = 0; i<n; i++)
{
result ^=A[i];
}
return result;
}