167.两数之和II

167. 两数之和 II - 输入有序数组

题目信息: 升序 , 答案唯一,不可使用重复元素。

1
2
3
4
5
6
示例 1:

输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

使用双指针。 left,right 分为指向数组头尾。

判断 二者之和(numbers[left]+numbers[right])与目标值的小大比较。

​ 相等则输出

​ 小于 : 将二者和变大 left+1;

​ 大于 : 将二者和变小 right-1;

​ *** 由于numbers的小标由1开始计数,则返回时 left +1,right+1;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left=0,right=numbers.length-1;
while( numbers[left]+numbers[right] != target){
if( (numbers[left]+numbers[right])>target ){
right--;
}else if((numbers[left]+numbers[right])<target){
left++;
}else {
return new int[]{left+1,right+1};
}
}
return new int[]{left+1,right+1};
}
}
  • Copyrights © 2021 高志宏
  • 访问人数: | 浏览次数:

贫穷蒙蔽了我的双眼

支付宝
微信