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]
-
JavaScriptのBSTの2つの合計
問題: 最初の引数と2番目の引数として、2つの二分探索木のルートであるroot1とroot2をそれぞれ取り込むJavaScript関数を作成する必要があります。関数の3番目の引数はnumber、targetです。 この関数は、最初のツリーにノードがあり、2番目のツリーにノードがあり、その値の合計が特定の整数ターゲットになる場合にのみTrueを返し、それ以外の場合はfalseを返す必要があります。 たとえば、関数への入力が-の場合 const target = 23; BST その場合、出力は-になります。 const output = true; 出力の説明: 最初のツリーに
-
Pythonでの2つの合計
整数の配列があるとします。 2つの整数のインデックスを返す必要があります。これにより、それらを合計すると、指定された特定のターゲットに到達します。ここでは、1つの仮定を取ります。つまり、配列には常に1つの一意のソリューションがあるため、同じターゲットの2つのインデックスセットは存在しません。 たとえば、配列がA =[2、8、12、15]のようで、ターゲットの合計が20であるとすると、A [1] + A [2]=20としてインデックス1と2が返されます。 これを解決するために、配列の各要素をループします。したがって、これを解決するには、次の手順に従ってください。 resと呼ばれる結果を保