Leetcode之PHP版题目解析(167. Two Sum II - Input array is sorted)


2019-3-21 星期四  开始吧

上一题链接Leetcode之PHP版题目解析(231. Power of Two)

fe8f2aee48e746b56c1f1e9527065f67.png

题目描述

看到这个题目有点熟悉,就是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++;
        }
    }

Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Leetcode PHP题解--D10 942. DI String Match

>> 下一篇: Leetcode PHP题解--D11 461. Hamming Distance