一.题目描述:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
二.js代码实现:
1.实现思路:
(1)先对数组进行排序,从小到大排序
(2)对数组的第一个元素和最后一个元素单独考虑,若第一个元素不等于第二个则返回第一个,若最后一个元素不等于倒数第二个元素,则返回最后一个元素
(3)对数组进行遍历,判断每个元素和前一个以及后一个元素均比较,在都不相等时返回该值
2.js代码实现:
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
let num = nums.sort((a,b) => {return a-b;});
let res;
if(num[0] != num[1])
{
return num[0];
}
if(num[num.length-1]!=num[num.length-2])
{
return num[num.length-1];
}
for(let i=1;i<num.length-1;i++)
{
if(num[i] != num[i+1] && num[i] != num[i-1])
{
res = num[i];
}
}
return res;
};