题目链接
https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/
一. 题目描述

cpp
class Solution {
public:
vector<int> twoSum(vector<int>& price, int target) {
}
};
二. 解题思路
- 本题利用单调性和双指针,是非常简单的一道题。
其实就是根据单调性,大了左往走,小了往右走,相等就返回。

- 需要注意的是,要为找不到的情况随便返回一个值(走不到这条语句)。这道题的测试用例都是一定能找到一对相加等于target的值的,但是力扣平台不允许出现可能某条路径没有返回值。我们知道前两条判断只是过程最终一定会走到else语句返回一组值,但是平台认为如果在if或者else if结束了会没有返回值,所以我们在最后添加return {-1, -1}; // 隐式类型转换
三. 代码实现
cpp
class Solution
{
public:
vector<int> twoSum(vector<int>& price, int target)
{
int left = 0, right = price.size()-1;
while(left < right)
{
if(price[left] + price[right] < target)
left++;
else if(price[left] + price[right] > target)
right--;
else
return {price[left], price[right]};
}
return {-1, -1}; // 查找失败
}
};