167 -两个Sum II - 输入数组已排序

给定已按升序排序的整数数组,找到两个数字,使它们相加到特定的目标数。

函数twoSum应返回两个数字的索引,以便它们加起来到目标,其中index1必须小于index2。

注意:

  • 您返回的答案(index1和index2)不是从零开始的。
  • 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。

例:

输入:数字= [2,7,11,15],目标= 9
输出: [1,2]
说明: 2和7之和为9.因此
index1 = 1,index2 = 2。
初始化i和j分别为首位索引和末尾索引。开始循环将数组下标i跟j的值相加比较是否为目标值作为循环条件。如果相加大于目标值,j--;如果相加小于目标值,i++;
 public static int [] twoSum(int [] numbers,int target)
    {
        int i=0,j=numbers.length-1;
        while(numbers[i]+numbers[j]!=target)
        {
            if (numbers[i]+numbers[j]>target)
                j--;
            else if (numbers[i]+numbers[j]<target)
                i++;
        }
        return new int[]{i+1,j+1};
    }

 


上一篇:剑指Offer(牛客版)--面试题11:旋转数组的最小数字


下一篇:有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。