商品价格按照升序记录于数组
price。请在购物车中找到两个商品的价格总和刚好是target。若存在多种情况,返回任一结果即可。示例 1:
输入:price = [3, 9, 12, 15], target = 18 输出:[3,15] 或者 [15,3]
- 1
- 2
示例 2:
输入:price = [8, 21, 27, 34, 52, 66], target = 61 输出:[27,34] 或者 [34,27]
- 1
- 2
提示:
1 <= price.length <= 10^51 <= price[i] <= 10^61 <= target <= 2*10^6
用两层循环把所有的可能性都列举出来,然后判断是否有等目标值的两个数

class Solution {
public:
vector twoSum(vector& price, int target) {
for(int i=0;i 因为本题是升序的数组,利用对撞指针可以极大的优化时间复杂度
初始化left和right分别指向数组的左右两端(这里的left和right表示是下标)
当left
当price[left]+price[right]==target,说明找到结果,记录结果,并且返回
当price[left]+price[right]>target时,对于price[right],此时price[left]相当于price[right]能碰过的最小值,如果此时没有符合price[right]的数了,right--然后比较下一组数据
当price[left]+price[right]price[left],此时price[right]相当于price[left]能碰过的最大值,如果此时就没有符合price[left]的数了,left++然后比较下一组数据

class Solution {
public:
vector twoSum(vector& price, int target) {
int n=price.size();
//设置左右指针
int left=0,right=n-1;
while(lefttarget)
right--;
//小于左指针++
else if(price[left]+price[right]