jz57.和为s的两个数字

题目描述

题解

双指针

因为组数是增序的,所以首先想到使用双指针来实现. 计算收尾两个指针所指数字的和, 如果大于目标值, 就左移右指针, 如果小于目标值, 就右移左指针, 如果相等, 直接返回左右指针当前所指的数字组成的数组.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public int[] twoSum(int[] nums, int target) {
int i = 0;
int j = nums.length-1;
int[] res = new int[2];
while (true){
if (nums[i]+nums[j]<target){
i++;
}else if (nums[i] + nums[j]>target){
j--;
}else {
res[0] = nums[i];
res[1] = nums[j];
break;
}
}

return res;
}
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗