给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例1:
输入:[1,2,2,3,3]
输出:1
解题思路:
先把数组按照从大到小排序,
然后先考虑第一个和最后一位数字的情况,
如果第一位和第二位不等 则返回第一位;
若最后一位与倒数第二位不相等 则返回最后一次;
然后比较当前相邻左右数字,如果两边都不相等 则返回当前数字
代码如下:
function singleNumber(nums){
nums = nums.sort((a,b)=>a-b);
if(nums[0] !==nums[1]){
return nums[0];
}
if(nums[nums.length-1] !==nums[length-2]){
return nums[length-1]
}
for(let i =1;i<nums.length;i++){
if(nums[i] !== nums[i-1] && nums[i] !== nums[i+1]){
return nums[i]
}
}
}