「Two Sum II - 入力配列がソートされる」問題は、配列とポインター操作の理解をテストする古典的なコーディングの課題です。また、エレガントかつ効率的なソリューションを紹介する絶好の機会でもあります。問題を深く掘り下げて、それを解決するための最適なアプローチを詳しく見てみましょう。
LeetCode の問題へのリンク
非降順でソートされた整数のインデックスが 1 の配列が与えられた場合、目標は、その合計が指定されたターゲットに等しくなる 2 つの数値を見つけることです。これら 2 つの数値のインデックスを配列 [index1, Index2] として返す必要があります。ここで、1
入力: 数値 = [2,7,11,15]、ターゲット = 9
出力: [1, 2]
入力: 数値 = [2,3,4]、ターゲット = 6
出力: [1, 3]
入力: 数値 = [-1,0]、ターゲット = -1
出力: [1, 2]
問題の制約 (ソートされた配列と単一の解) により、この問題は 2 ポインター手法の完璧な候補になります。その理由は次のとおりです:
以下は、2 ポインター アプローチの JavaScript 実装です。
/** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function(nums, target) { const length = nums.length; let rightPointer = length - 1; let leftPointer = 0; while (leftPointer < rightPointer) { if (nums[leftPointer] + nums[rightPointer] === target) { return [leftPointer + 1, rightPointer + 1]; } if (nums[leftPointer] + nums[rightPointer] > target) { rightPointer--; } else { leftPointer++; } } };
2 つのポインターを初期化します:
会うまで繰り返す:
インデックスを返します:
最初の例を見てみましょう:
2 ポインター法は、入力配列のソートされた性質を利用して、「Two Sum II - 入力配列がソートされている」問題をエレガントに解決します。これは効率を確保するだけでなく、スペースの制約にも従う強力な手法であり、同様の問題に対して頼りになるアプローチとなります。コーディングを楽しんでください!
以上が2 つの和を効率的に解く II - 入力配列がソートされるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。