2019-03-21 吴亲库里 库里的深夜食堂
看到这个题目有点熟悉,就是Leetcode第一题的两数之和第二版,给定一个按升序排序的整数数组,找到两个数,加起来等于特定的值。

这边题目让我们需要注意的是返回的答案不是从0开始的,因为是有序的,所以左边的数一定小于右边的数,我们可以设置两个值,一个指向数组的开头一个指向数组的末尾,当两数相加等于给定的值时,返回他们的下标,如果值大于给定的值,说明右边大了,右边向左移动一位,否则,左边向右移动一位。
/**
* @param Integer[] $numbers
* @param Integer $target
* @return Integer[]
*/
function twoSum($numbers, $target) {
$start=0;
$end=count($numbers)-1;
while($start<$end) {
$sum=$numbers[$start]+$numbers[$end];
if($sum==$target) return [$start+1,$end+1];
else if($sum>$target) $end--;
else $start++;
}
}
