跳到主要内容

136.只出现一次的数字

链接:136.只出现一次的数字
难度:Easy
标签:位运算、数组
简介:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

题解 1 - javascript

  • 编辑时间:2020-05-14
  • 执行用时:72ms
  • 内存消耗:36.7MB
  • 编程语言:javascript
  • 解法介绍:累加,利用异或消除重复。
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function (nums) {
if (nums.length === 0) return 0;
let res = nums.shift();
for (const num of nums) res ^= num;
return res;
};

题解 2 - javascript

  • 编辑时间:2020-05-14
  • 执行用时:60ms
  • 内存消耗:35.1MB
  • 编程语言:javascript
  • 解法介绍:根据题解 1,利用 reduce 可单行解决。
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = nums => nums.reduce((total, curV) => total ^ curV, 0);

题解 3 - cpp

  • 编辑时间:2021-12-21
  • 执行用时:16ms
  • 内存消耗:16.4MB
  • 编程语言:cpp
  • 解法介绍:异或。
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0;
for (int i = 0; i < nums.size(); i++) ans ^= nums[i];
return ans;
}
};

题解 4 - python

  • 编辑时间:2023-10-14
  • 执行用时:36ms
  • 内存消耗:17.67MB
  • 编程语言:python
  • 解法介绍:异或排除重复数字。
class Solution:
def singleNumber(self, nums: List[int]) -> int:
return reduce(lambda a, b: a ^ b, nums, 0)