1.类型:位运算
2.描述:
image.png
3.思路
最初自己看到题的想法:把这个数组循环存到对象中,值作为键,次数作为值。然后循环找到值为1的键。
4.代码
解法1:排序
先对数组排序,然后循环遍历这个数组,判断i和i+1位置上的元素是否相等,如果相等,根据所给k值,改变i的值(将下标直接改变到和第k个的第i个元素,通过i++遍历的元素就到了下一个不同的元素);如果不等,那就直接返回arr[i]这个元素。
function foundOnceNumber( arr , k ) {
// write code here
arr.sort();
for(let i = 0; i < arr.length - 1; i++) {
if (arr[i] == arr[i + 1]) {
i += k -1;
}else {
return arr[i];
}
}
return arr[arr.length - 1];
}
module.exports = {
foundOnceNumber : foundOnceNumber
};
为什么i += k -1;?根据不同的k值找出的规律,最后一个相同的下标是,i= i+k-1
image.png
image.png