JS では、ハッシュ テーブルを使用して、配列内の 2 つの数値の合計がターゲット値と等しいことを認識します。

トピック:

        整数配列 nums と整数ターゲット値 target が与えられた場合、その合計が配列内のターゲット値 target である 2 つの整数を見つけ、それらの配列添字を返します。各入力に対する答えは 1 つだけであると想定できます。ただし、配列内の同じ要素が回答に繰り返し現れることはありません。回答は任意の順序で返すことができます。

 

 数 aa までトラバースすると、targettarget から aa を引いて bb が得られ、ハッシュ テーブルに bb が存在する場合は、結果を直接返すことができます。bb が存在しない場合は、aa をハッシュ テーブルに格納して、後続のトラバーサル番号で使用できるようにする必要があります。

var twoSum = function (nums, target) {
      let map = new Map()
      for (var i = 0; i < nums.length; i++) {
            // 算出当前数字和目标数字的差
            // 若哈希表中存在该差值
            if (map.has(target - nums[i])) {
                  // 则返回当前索引值和差值索引值,即返回结果
                  return [map.get(target - nums[i]), i]
            } else {
                  // 否则就将当前值作为key,索引作为value存入哈希表
                  map.set(nums[i], i)
            }
      }
      return []
};
console.log(twoSum([3, 2, 4], 6))

結果: ターゲット値の合計に対応するインデックスを出力します

 

おすすめ

転載: blog.csdn.net/qq_41579104/article/details/130007322