题目
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例
输入: [2,2,1]
输出: 1
思路
方法一:通过判断数组中的元素indexOf和lastIndexOf相同,则该元素为唯一一个
方法二:异或运算(方法来自题解)
1、0和任何数做异或运算等于任何数 0 ^ n = n
2、任何数和其自身做异或运算等于0 n ^ n = 0
实现
方法一
var singleNumber = function(nums) {
return nums.filter(item => nums.indexOf(item) === nums.lastIndexOf(item))[0] // 执行时间长
};
方法二
var singleNumber = function(nums) {
return nums.reduce((result, cur) => result ^= cur, 0)
};