给定已按升序排序的整数数组,找到两个数字,使它们相加到特定的目标数。
函数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};
}