admin管理员组文章数量:1794759
每日一练【查找总价格为目标值的两个商品】
一、题目描述
题目链接
购物车内的商品价格按照升序记录于数组 price
。请在购物车中找到两个商品的价格总和刚好是 target
。若存在多种情况,返回任一结果即可。
示例 1:
代码语言:javascript代码运行次数:0运行复制输入:price = [3, 9, 12, 15], target = 18
输出:[3,15] 或者 [15,3]
示例 2:
代码语言:javascript代码运行次数:0运行复制输入:price = [8, 21, 27, 34, 52, 66], target = 61
输出:[27,34] 或者 [34,27]
二、题目解析
注意题目中的关键字——有序数组,但我们遇见有序的情况,一定要优先考虑两种算法:
二分和双指针
但是能用双指针,我们优先使用双指针,因为只要能用双指针的算法一般都是最优的,该算法能使时间复杂度降维!
双指针思想:
定义左右两个指针,分情况讨论,循环遍历数组一遍,即可找出答案。
三、原码
代码语言:javascript代码运行次数:0运行复制int* twoSum(int* price, int priceSize, int target, int* returnSize) {
//有序,运用双指针的算法解决
*returnSize = 2;
int left = 0;
int right = priceSize - 1;
while(left < right)
{
if((price[left] + price[right]) == target)
{
int* arr = (int*)malloc(sizeof(int) * (*returnSize));
arr[0] = price[left];
arr[1] = price[right];
return arr;
}
else if(price[left] + price[right] > target)
right--;
else
left++;
}
return NULL;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-15,如有侵权请联系 cloudcommunity@tencent 删除指针int遍历数组算法本文标签: 每日一练查找总价格为目标值的两个商品
版权声明:本文标题:每日一练【查找总价格为目标值的两个商品】 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754810154a1706734.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论