题目描述:
购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。
利用单调性,分三种情况:
1.当加和小于目标时,left++
2.当大于目标时,right–
3.直接返回,这里是返回两个数的一个数组,用一组大括号就能返回
class Solution {
public:vector<int> twoSum(vector<int>& price, int target) {int left=0,right=price.size()-1;while(left<right){int sum=price[left]+price[right];if(sum<target) left++;else if(sum>target) right--;else return {price[left],price[right]};}return {-1,-1};}
};
需要注意的是leetcode这里需要返回一个值,强行返回一个值照顾编译器。