Code Kata #1


コードディレクトリ#1 数値配列と特定数をtwoSum関数にパラメータとして渡す場合は、「特定数」が表示されるインデックスを配列に入れて返します。 nums:数値配列 target:2つの数の合計を加算できます return:2つのインデックスの配列 たとえば、 numsは[4,9,11,14]targetは13を表す nums[0]+nums[1]=4+9=13でしょう? [0,1]を返さなければなりません。 **仮定** targetに送信された合計は配列全体で2つしかないと仮定した。

💁 もんだいぶんせき


配列から2つの数を減算し、加算した値がターゲット値に等しい場合は、2つの数の配列インデックス値を返す必要があります.そのため、for文を使用して加算する2つの数を検索し、条件に合致する数を見つける必要があります.そのため、for文にif文を入れる必要があります.

🙈 マイコード


✔」初めての試み

const twoSum = (nums, target) => {
  // 아래 코드를 작성해주세요.
  let arr = [];
  
  for (let i = 0; i < nums.length; i++){
    for(let i = i + 1; i < nums.length; i++){
      if(nums[i] + nums[j] === target){
        arr.push(i, i+1);
      }
    }
  }
  return arr;
};

module.exports = { twoSum };
最初は変数をiとi+1に設定しましたが、nums配列に2つの数字がない場合は失敗します.

✔」2回目の試み


では、いっそ変数を違うものに設定して、比較してみてはいかがでしょうか.このような気持ちで変数iとjを宣言し,繰り返し文を振り返った.
const twoSum = (nums, target) => {
  // 아래 코드를 작성해주세요.
  let arr = [];
  
  for (let i = 0; i < nums.length; i++){
    for(let j = i + 1; i < nums.length; j++){
      if(nums[i] + nums[j] === target){
        arr.push(i, j);
      }
    }
  }
  return arr;
};

module.exports = { twoSum };
結果は成功し、let jからi+1まで、1を使わなくても構わない.

👍 その他の回答

const twoSum = (nums, target) => {
  // 아래 코드를 작성해주세요.
  let arr = [];
  
  const subArr = nums.map(num => target - num);
  const intersection = nums.filter(num => subArr.includes(num))
  intersection.forEach(num => arr.push(nums.indexOf(num)))
  return arr;
};
【IDを読む】のハーモニー…!本当に光のように衝撃を受けます;ドアが非効率なので、どうしようか悩んでいましたが、こんな方法があるなんて驚きました.
私はまだmap methodとあまり詳しくありませんが、今度の機会に勉強し直すべきだと思います.
Array.map()テクノロジーブログ
Array.map()公式ドキュメント
Array.filter()公式ドキュメント