一、题目描述
二、提交代码
class Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);
int index =nums.length-1;
for(int i =0;i<nums.length-1;i++){
if(nums[i]==nums[i+1]){
i+=1;
}
else{
index = i;
break;
}
}
return nums[index];
}
}
三、注意事项
- Arrays的sort()方法,参数为排序数组对象nums
- index应初始化为最后一个元素的索引,避免结果为最后一个数字,而被跳过判断。
- 使用了系统自带函数
四、其他优解思路
class Solution {
public int singleNumber(int[] nums) {
int single = 0;
for (int num : nums) {
single ^= num;
}
return single;
}
}
- ^异或运算符
- 相同数异或等于0
- 一个数与0异或等于数本身
- 异或运算满足交换律和结合律
- 即使不排序,所有元素异或后=所有 相同元素异或最后与结果元素异或
- 可以从数学层面考虑解法