Oli*_*via 3 javascript algorithm
什么是找到一个数组的唯一独特价值的最佳方式(有效的)在时间复杂度方面.
例:
findUniq([2, 1, 1, 1, 1, 1]) 应该回来 2
findUniq([3, 4, 3, 3, 3, 3, 3, 3, 3]) 应该回来 4
限制:
该数组首先包含2个以上的值.
该数组只有数字.
该数组只有一个唯一值,如[1,7,1,1]或[4,2,2,2]
[3,4,5,3]不是有效输入.
我想知道我是否可以Set用来解决这个问题.
这是带有for循环的解决方案,我不确定此解决方案是否会通过所有方案.
let findUniq = (arr) => {
for(let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[0]) {
return arr[i]
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用find方法并检查是否indexOf等于lastIndexOf.它将返回第一个匹配并停止循环.
const uniq = arr => arr.find((e, i) => arr.indexOf(e) == arr.lastIndexOf(e));
console.log(uniq([3, 4, 3, 3, 3, 3, 3, 3, 3]));
console.log(uniq([1, 2, 3, 1, 2]));
console.log(uniq([2, 1, 1, 1, 1, 1]));Run Code Online (Sandbox Code Playgroud)