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

JavaScriptの線形時間における2つの合計の問題


最初の引数として数値の配列を取り、2番目の引数としてターゲットの合計を受け取るJavaScript関数を作成する必要があります。

関数は、配列(連続または非連続)からそのような2つの数値のインデックスを見つけて返す必要があります。これを合計すると、ターゲットの合計(存在する場合)が得られます。条件は、線形時間(1回の反復)でこれを実行する必要があることです。

マップを使用して反復された数値をカウントし続けます。いずれかの時点で、目標の合計を示す2つの数値に遭遇した場合は、すぐに戻ります。

このためのコードは-

になります
const arr = [1, 3, 5, 7, 9, 11];
const target = 16;
const twoSum = function(arr, target) {
   const map = new Map();
   for(let i = 0; i < arr.length; i++) {
      let num = arr[i];
      if(map.get(num) === undefined){
         map.set(target−num, i)
      }else{
         return [map.get(num), i]
      };
   };
};
console.log(twoSum(arr, target));

出力

そして、コンソールの出力は-

になります
[3, 4]

  1. JavaScriptのBSTの2つの合計

    問題: 最初の引数と2番目の引数として、2つの二分探索木のルートであるroot1とroot2をそれぞれ取り込むJavaScript関数を作成する必要があります。関数の3番目の引数はnumber、targetです。 この関数は、最初のツリーにノードがあり、2番目のツリーにノードがあり、その値の合計が特定の整数ターゲットになる場合にのみTrueを返し、それ以外の場合はfalseを返す必要があります。 たとえば、関数への入力が-の場合 const target = 23; BST その場合、出力は-になります。 const output = true; 出力の説明: 最初のツリーに

  2. Pythonでの2つの合計

    整数の配列があるとします。 2つの整数のインデックスを返す必要があります。これにより、それらを合計すると、指定された特定のターゲットに到達します。ここでは、1つの仮定を取ります。つまり、配列には常に1つの一意のソリューションがあるため、同じターゲットの2つのインデックスセットは存在しません。 たとえば、配列がA =[2、8、12、15]のようで、ターゲットの合計が20であるとすると、A [1] + A [2]=20としてインデックス1と2が返されます。 これを解決するために、配列の各要素をループします。したがって、これを解決するには、次の手順に従ってください。 resと呼ばれる結果を保