JavaScriptには、1回の数値のみが空でない整数配列を与え、ある要素が1回しか現れない以外は、各要素が2回現れます.それが一度しか現れなかった要素を見つけます.
1083 ワード
空でない整数配列が与えられ、ある要素が1回しか現れない以外は、各要素が2回現れます.それが一度しか現れなかった要素を見つけます.
説明:
あなたのアルゴリズムは線形時間の複雑さを持つべきです.余分なスペースを使わずに実現できますか?
例1:
入力:[2,2,1]出力:1例2:
入力:[4,1,2,1,2]出力:4
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/single-number著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
^=排他演算
この演算子は主にビット演算の場合に用いられるが,通常の数でも用いることができ,バイナリの数を10進数に変換する変換過程がある.
例を挙げる
どういつえんざん
演算アルゴリズムはaとb=ab+a‘b’(a’は非a)であり、すなわちaとbは同じ真であり、異なるのは偽である.
説明:
あなたのアルゴリズムは線形時間の複雑さを持つべきです.余分なスペースを使わずに実現できますか?
例1:
入力:[2,2,1]出力:1例2:
入力:[4,1,2,1,2]出力:4
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/single-number著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
var singleNumber = function(nums) {
//
var obj = {};
for (var i = 0; i < nums.length; i++) {
var item = nums[i];
if (!obj[item]) {
obj[item] = 1;
} else {
obj[item] += 1;
}
}
for (var k in obj) {
if (obj[k] == 1) {
return k
}
}
//
let ans = 0;
for(const num of nums) {
ans ^= num;
}
return ans;
};
^=排他演算
この演算子は主にビット演算の場合に用いられるが,通常の数でも用いることができ,バイナリの数を10進数に変換する変換過程がある.
例を挙げる
var a = 1 ^ 2;
//3
//1 -> 01
//2 -> 10
//1 ^ 2 -> 11 -> 3
var a = 3 ^ 2;
// 11 ^ 10 = 01 -> 1
どういつえんざん
演算アルゴリズムはaとb=ab+a‘b’(a’は非a)であり、すなわちaとbは同じ真であり、異なるのは偽である.