算法练习:LCR 179. 查找总价格为目标值的两个商品
题目链接:LCR 179. 查找总价格为目标值的两个商品
利用双指针位于数值两端来进行控制,定义sum来记录两指针分别对应的值的和,
这里有个重要的点就是该数组是升序,所以:
- 当sum > target时,end--,缩小sum值;
- 当sum < target时,first++,增大sum值;
- 当sum = target时,就找到对应值;
- 如果first == target时,没有找到对应值,返回空。
class Solution {
public: //价格 目标
vector<int> twoSum(vector<int>& price, int target) {
int first = 0;
int end = price.size()-1;
int sum = 0;
//int*p;
vector<int> num;
while(first!=end)
{
sum = price[first]+price[end];
if(sum>target)
{
end--;
}
else if(sum<target)
{
first++;
}
else
{
return {price[first],price[end]};
}
}
return {};
}
};