森田賢二のleetCodeの使い方、解説、解答を毎日更新しているキャラクター

[leetcode]問題解答と解説。136. Single Number [JavaScript]

[leetcode]問題解答と解説。136. Single Number [JavaScript]

皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
時間時間で。
私は私自身ある決意をして今臨んでいます。

では今日のleetCodeをやったことを見てもらいます。

これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。

森田賢二のleetCode
森田賢二のleetCode

136. Single Number ルール

  • number[]の配列に必ず2つのペアにならない1つの要素がある。それを抽出する
  • 例えば[2, 2, 1]なら1
  • [4,6,4, 2,5,2,6]なら5

136. Single Number 問題ページ

Single Number

136. Single Number my code

  • まずは揃える
  • マッチしない場合は前後の数値を確認して違うものをresultに入れる
function singleNumber(nums: number[]): number {
    const sn = nums.sort()
    let f = 0;
    let sl = sn.length
    if(sn.length === 1) return sn[0]
    let result = 0
    while(f < sl){
        if(sn[f] === sn[f+1]){
            f = f + 2;
            continue;
        }
        if(sn[f-1] === sn[f]){
            result = sn[f+1]
            break
        }
        result = sn[f]
        break
    }
    return result;
};

ちょっと難しく考えすぎている...

SingleNumber見本

^がよく説明されていない

これの方が理解できてスマートな気がした

Facebook & Amazon's SINGLE NUMBER | LeetCode | [step - by - step 2 Solutions] JAVASCRIPT

function singleNumber(nums) {
    let setforUnique = new Set()
    for (num of nums){
        if(setforUnique.has(num)){
            setforUnique.delete(num)
        } else {
            setforUnique.add(num)
        }
    }
    return Array.from(setforUnique)[0]
}
singleNumber([4, 1, 2, 1, 2])

重複があったら削除して、なければadd

別解2

function singleNumber(nums) {
    let result = 0
    for(let i = 0; i < nums.length; i++){
        result ^= nums[i]
    }
    return result;
}

Single Numberをやってみて感想

  • 簡単に書いてあって読みやすいものが一番いいですね

カテゴリー leetCode