Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

合計がターゲットの合計に等しい配列内の3つの要素のグループを見つける方法JavaScript


Numbersの配列とtargetsumを受け取るthreeSum()などの関数を作成する必要があります。配列内に合計で目標の合計となる3つの数値が存在するかどうかをチェックします。配列内にそのような数値が存在する場合は、配列内のインデックスを返す必要があります。そうでない場合は、-1を返す必要があります。

アプローチ

アプローチは単純です。最初に関数twoSum()を記述します。この関数は、配列とターゲットの合計を受け取り、線形時間と空間を使用して、合計がターゲットの合計に1になる2つの数値のインデックスを返します。

次に、実際の関数threeSum()を記述します。この関数は、配列内の各要素を反復処理して、twoSum()番号に追加すると実際のターゲットに加算できる3番目の要素のインデックスを見つけます。

したがって、このように、O(N ^ 2)時間で3つの要素を見つけることができます。このためのコードを書いてみましょう-

const arr = [1,2,3,4,5,6,7,8];
const twoSum = (arr, sum) => {
   const map = {};
   for(let i = 0; i < arr.length; i++){
      if(map[sum-arr[i]]){
         return [map[sum-arr[i]], i];
      };
      map[arr[i]] = i;
   };
   return -1;
};
const threeSum = (arr, sum) => {
   for(let i = 0; i < arr.length; i++){
      const indices = twoSum(arr, sum-arr[i]);
      if(indices !== -1 && !indices.includes(i)){
         return [i, ...indices];
      };
   };
   return -1;
};
console.log(threeSum(arr, 9));
console.log(threeSum(arr, 8));
console.log(threeSum(arr, 13));
console.log(threeSum(arr, 23));

出力

コンソールの出力は-

になります
[ 0, 2, 4 ]
[ 0, 2, 3 ]
[ 0, 4, 6 ]
-1

  1. JavaScriptで配列を空にするにはどうすればよいですか?

    JavaScriptで配列を空にするには、変数を空に設定します: arr = [] 例 次のコードを実行して、JavaScriptで配列を空にすることができます: <html>    <head>       <title>JavaScript Arrays</title>    </head>    <body>       <script>       &nb

  2. 複数の値でJavaScript配列の要素を見つける方法は?

    以下は、JavaScript配列の要素を複数の値で検索するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> &nbs