给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
输入: [2,2,1]
输出: 1
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function (nums) {
for (let i = 0; i !== nums.length; i++) {
let isExist = false;
for (let j = i + 1; j !== nums.length; j++) {
if (nums[j] === nums[i]) {
isExist = true;
break;
}
}
for (let j = i - 1; j >= 0; j--) {
if (nums[j] === nums[i]) {
isExist = true;
break;
}
}
if (!isExist) {
return nums[i];
}
}
};
说实话,一手强烈的自我怀疑…
我自己都不知道到底对不对,丢进去他说我对就对了吗?很迷
睡觉了,终于熬到周五…
上面这个方法也太傻了,蠢到不行
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function (nums) {
let obj = {};
for (let i = 0; i !== nums.length; i++) {
if (obj[nums[i]] === undefined) {
obj[nums[i]] = NaN;
} else {
delete obj[nums[i]];
}
}
return +Object.keys(obj)[0];
};
这是一个比较好理解的方法,看了以后就学会了
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
let result = 0;
nums.forEach(el => (result ^= el));
return result;
};
这个是根本看不懂的方法,就算我百度了按位异或,我还是看不懂