javascript中给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明: 算法应该具有线性时间复杂度。可以不使用额外空间来实现吗?
时间: 2023-12-05 11:07:34 浏览: 90
可以使用位运算中的异或(XOR)操作来解决这个问题。因为异或操作满足交换律和结合律,所以对于任何两个相同的数字异或结果都为0。而任何数字与0异或结果都为它本身。因此,将数组中所有元素进行异或操作,最终的结果就是那个只出现了一次的元素。
以下是JavaScript代码实现:
```javascript
function findSingleNumber(nums) {
let result = 0;
for (let i = 0; i < nums.length; i++) {
result ^= nums[i];
}
return result;
}
// 示例测试
console.log(findSingleNumber([2,2,1])); // 输出1
console.log(findSingleNumber([4,1,2,1,2])); // 输出4
```
该算法的时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文