0
ビット演算子でこの問題を解決することは可能ですか? 整数の配列が与えられた場合、2つの同じ番号を見つけて、それらのうちの1つを返します。たとえば、配列[7,3,5,6,7] answer 7です。問題がビットごとに解決できるときを理解しようとしています。これまでのところ、2で掛け算したり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