剑指 Offer 57. 和为s的两个数字
题目链接:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/
1.思路
利用双指针,先固定i,然后j慢慢变大,直到j到达边界或者i,j位置上的值相加大于target,此时i,j开始向对方靠近,小了则i变大,大了则j变小。
public int[] twoSum(int[] nums, int target) {
int i = 0;
int j = 1;
while (j < nums.length && nums[i]+nums[j]<target){
j++;
}
while ( nums[i]+nums[j]!=target){
if (nums[i]+nums[j]>target){
j--;
}
if (nums[i]+nums[j]<target){
i++;
}
}
return new int[]{i,j};
}
题解的想法:其实一开始就不需要寻找j的位置,直接让j从尾部开始解决即可