「Two Sum II - 輸入陣列已排序」問題是一個經典的編碼挑戰,測試您對陣列和指標操作的理解。這也是展示優雅且高效的解決方案的絕佳機會。讓我們深入研究這個問題並分解解決它的最佳方法。
LeetCode 上的問題連結
給定一個按非遞減順序排序的 1 索引整數數組,您的目標是找到兩個數字,使其總和等於給定目標。您需要將這兩個數字的索引作為數組 [index1, index2] 返回,其中 1
輸入: 數字 = [2,7,11,15],目標 = 9
輸出: [1, 2]
輸入: 數字 = [2,3,4],目標 = 6
輸出: [1, 3]
輸入: 數字 = [-1,0],目標 = -1
輸出: [1, 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++; } } };
初始化兩個指標:
迭代直到他們相遇:
回索引:
讓我們來看看第一個範例:
兩指標方法透過利用輸入數組的排序性質,優雅地解決了「Two Sum II - 輸入數組已排序」問題。這是一種強大的技術,不僅可以確保效率,而且可以遵守空間限制,使其成為解決類似問題的首選方法。快樂編碼!
以上是高效求解二和 II - 輸入數組已排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!