赞
踩
一. 题目链接
LeetCode - LCR 179. 查找总价格为目标值的两个商品
解法(双指针 - 对撞指针):
算法思路:
注意到本题是升序的数组,因此可以用「对撞指针」优化时间复杂度。
算法流程:
初始化left ,right 分别指向数组的左右两端(这里不是我们理解的指针,而是数组的下标),当left < right 的时候,⼀直循环
i. 当nums[left] + nums[right] == target 时:
ii. 当nums[left] + nums[right] < target 时:
iii. 当nums[left] + nums[right] > target 时:
二. 动画解释
三. 代码解释
- class Solution {
- public:
- vector<int> twoSum(vector<int>& price, int target)
- {
- int left = 0;
- int right = price.size()-1;
- while(left < right)
- {
- int sum = price[left] + price[right];
- if(sum > target)
- {
- right--;
- }
- else if(sum < target)
- {
- left++;
- }
-
- else
- {
- return {price[left],price[right]};
- }
- }
- return {-1,-1};
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。