“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中文网其他相关文章!