力扣——查找总价格为目标值的两个商品点击跳转
注意题目中的关键信息升序
我们利用双指针,不管 target 是多少,让一个指针指向最小值,让一个指针指向最大
那么,共有三种情况
我们首先遇到的是第二种情况
-
sum < target
left 与最大值相加都小于 target ,此时中间的数都小于 right,那么 left 无论与中间的哪个数相加,都是小于 target 的 ,此时 left 是没用的,让 left ++
-
sum > target
right 与最小值相加都大于 target,此时中间的数都大于 left ,那么 right 无论与中间的哪个数相加 都会大于 target ,此时 right 是没用的,让 right –
-
sum = target
代码如下
class Solution {public int[] twoSum(int[] price, int target) {int left = 0;int right = price.length - 1;while(left < right){if(price[left] + price[right]> target){right--;}else if(price[left] + price[right] < target){left++;}else{int[] arr = new int[]{price[left],price[right]};return arr;}}return new int[]{0}; //力扣编译器认为上面的返回值只有else情况才能满足,所以为了照顾编译器,这里要有一个返回值}
}
完成!