0
是否可以使用按位运算符来解决此问题? 给定一个整数数组,找到两个相同的数字并返回其中的一个,例如在数组[7,3,5,6,7]答案是7.我试图了解何时可以按位解决问题。到目前为止,我明白,如果我乘以或除以2,我想使用左移乘以2,右移2除以,如果我想取消匹配的数字使用XOR。我想我可以退出第一对匹配的循环,但我现在不认为我可以。我试过这个。查找数组中的数字对是否可以使用按位运算符来解决
function findIt(arr) {
var dog = 0;
for (var i = 0; i < arr.length; i++) {
if ((dog ^= arr[i]) == 0) {
dog =arr[i];
break;
}
}
return dog;
}
这不是作业,我只是好奇地学习javascript中的按位运算。下面解决了香草溶液。
function findIt(arr) {
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (obj[arr[i]] === 1) {
return arr[i];
} else {
obj[arr[i]] = 1;
}
}
return 'no pairs found'
}
console.log(findIt([7,3,5,6,7))
你的函数只能找到数量相等。那是你要的吗? – Barmar
@barmar不,我希望它通过整个数组搜索一个数字对,而不是如果数字相邻。找到整个阵列中唯一的一对。我会改变我的示例输入。 –
然后,您需要使用嵌套循环,以便将每个元素与其他每个元素进行比较。 – Barmar