当前位置: 首页 > news >正文

【算法专题】双指针算法之LCR 179. 查找总价格为目标值的两个商品(力扣)

 欢迎来到 CILMY23的博客

🏆本篇主题为:双指针算法之LCR 179. 查找总价格为目标值的两个商品(力扣)

🏆个人主页:CILMY23-CSDN博客

🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营

🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注


题目:

LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode) 

购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。

示例:

一、题目解析

 根据题目给出的信息一共有以下几点:

1.price数组中的数据是升序排列

2.在数组中找两个数求和

3.存在多种情况,返回任一结果即可 --->找一个结果就行

4.情况中可能没有结果

在之前的磨练里,这种要找两个数,并且求和的,它是需要两个指针,所以这题为双指针算法

二、算法原理

 这题的解法跟之前的几篇写过的原理相似。

我们可以先想想暴力破解是如何做的:

 这题双循环,然后给它记录下来,一个数一个数的遍历过去,这样暴力破解的思路大致清晰了。

因为存在多种情况,返回任一结果即可 --->找一个结果就行。

暴力破解的复杂度是O(n^2),我们可以采用双指针算法来减少空间复杂度达到O(n)。

解析:

我们让一个left指向第一个数,right指向第二个数,如果他们加起来和target 给的数相等,那么我们就返回这两个数。

假设 left + right < 18,那说明left太小了,可以增加left的值,因为数组是单调递增,所以先增加最小的值,故让left++。

假设  left + right > 18,那说明right太小了,可以增加right的值,因为数组是单调递增,所以先减小最大的值,故让right--。

那如果没有结果,我们就返回一个{}就可以了。

三、代码编写

class Solution 
{
public:vector<int> twoSum(vector<int>& price, int target){int left = 0;int right = price.size() -1;while(left < right){if(price[left] + price[right] == target ){return {price[left],price[right]};}else if(price[left] + price[right] < target){left++;}else if(price[left] + price[right] > target){right--;}}return {};}
};

🛎️感谢各位同伴的支持,本期Linux专题就讲解到这啦,下期我们将详解介绍各种指令,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【已解决】服务器无法联网与更换镜像源
  • JavaScript之WebAPIs-BOM
  • TCP重传机制详解
  • 【BUG】已解决:requests.exceptions.ProxyError: HTTPSConnectionPool
  • Python自动化DevOps任务入门
  • go语言Gin框架的学习路线(七)
  • python调用chrome浏览器自动化如何选择元素
  • 函数(递归)
  • 【JAVA】数据类型及变量
  • Android Navigation 组件原理和使用教程
  • 面试问题:React基本概念,和所遇到的CPU和IO问题
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别
  • spdlog源码学习:std::unique_ptr订制删除器,guard用法,以及decltype
  • Python面试整理-Python中的函数定义和调用
  • CSS中外联样式表代表的含义
  • golang 发送GET和POST示例
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mysql innodb 索引使用指南
  • Mysql优化
  • python3 使用 asyncio 代替线程
  • Vultr 教程目录
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 二维平面内的碰撞检测【一】
  • 关于for循环的简单归纳
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 计算机常识 - 收藏集 - 掘金
  • 深度解析利用ES6进行Promise封装总结
  • 实现菜单下拉伸展折叠效果demo
  • 说说动画卡顿的解决方案
  • 由插件封装引出的一丢丢思考
  • scrapy中间件源码分析及常用中间件大全
  • 湖北分布式智能数据采集方法有哪些?
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 昨天1024程序员节,我故意写了个死循环~
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • !!java web学习笔记(一到五)
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #APPINVENTOR学习记录
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (12)目标检测_SSD基于pytorch搭建代码
  • (175)FPGA门控时钟技术
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (四)c52学习之旅-流水LED灯
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)Sublime Text3配置Lua运行环境
  • .NET Reactor简单使用教程