Leetcode之PHP版题目解析(167. Two Sum II - Input array is sorted)
2019-3-21 星期四 开始吧
上一题链接Leetcode之PHP版题目解析(231. Power of Two)
题目描述
看到这个题目有点熟悉,就是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++; } }
No Comments