Skip to content

136. 只出现一次的数字

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

示例 1 :

输入:nums = [2,2,1]
输出:1

示例 2 :

输入:nums = [4,1,2,1,2]
输出:4

示例 3 :

输入:nums = [1]
输出:1

提示:

  • 1 <= nums.length <= 3 * 104
  • -3 * 104 <= nums[i] <= 3 * 104
  • 除了某个元素只出现一次以外,其余每个元素均出现两次。

一、解法

可打开浏览器控制台输入singleNumber([4,1,2,1,2])进行测试。

typescript
// https://leetcode.cn/problems/single-number/

/**
 * @param {number[]} nums
 * @return {number}
 */
function singleNumber(nums: number[]): number{
    const tempObj: object = {};
    nums.forEach(num => {
        if (!tempObj[num]) tempObj[num] = 1;
        else tempObj[num] += 1;
    });

    let result = nums[0];
    Object.entries(tempObj).forEach((item) => {
        if (item[1] === 1) result = parseInt(item[0]);
    })
    return result;
};

console.log(singleNumber([4,1,2,1,2]))