gpt4 book ai didi

javascript - 从数组中获取第一个唯一元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:55 26 4
gpt4 key购买 nike

我在 LeetCode 上解决问题。即Single Number .

您需要创建一个函数,该函数将数组作为输入并返回数组中唯一不重复的元素。该数组将只包含一个这样的元素。

[2,2,1] //1
[2,3,5,2,3] //5

我已经用下面的代码解决了这个问题。

var singleNumber = function(nums) {
let obj = {}
for(let a of nums){
obj[a] = obj[a] + 1 || 1;
}
for(let key in obj){
if(obj[key] === 1) return key;
}
};

然而在提交结果后它说

Runtime: 68 ms, faster than 72.96% of JavaScript online submissions for Single Number.

我很想知道什么是解决这个问题更有效的方法。

最佳答案

非重复单个数字(数字是整数,重复的数字只重复一次)的经典解决方案只是计算所有数字的 x 或:

var singleNumber = function(nums) {
let res = 0;
for(let x of nums) res ^= x; // shorthand for res = res ^ x
return res;
};

请注意,如果显式基于索引的 for 循环或 for-of.forEach 更快或更慢取决于具体Javascript 引擎。例如:

var singleNumber = function(nums) {
let res = 0;
for(let i=0,n=nums.length; i<n; i++) res ^= nums[i];
return res;
};

可能for ... of 方法更快。

关于javascript - 从数组中获取第一个唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55878337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com