【算法专题】双指针算法之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 {};}
};

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用nginx解决本地环境访问线上接口跨域问题

前言 前端项目开发过程中&#xff0c;经常会遇到各种各样的跨域问题。 虽然大部分时候&#xff0c;由脚手架自带的proxy功能即可解决问题&#xff0c;如webpack&#xff0c;vite等&#xff1b;但是若没有通过脚手架搭建项目&#xff0c;或者必须使用某些特殊规则转发时&#…

了解光耦合器从基础到应用

光耦合器也称为光电耦合器&#xff0c;是一种利用光信号传递电信号的电子元器件。它广泛应用于各种电子设备和电路中&#xff0c;因其在隔离电气信号、提高抗干扰能力方面的独特优势&#xff0c;备受工程师们的青睐。本文将为光耦爱好者和高级工程师提供一份有关光耦合器的知识…

解锁人工智能学习中的数学密钥

一、启航&#xff1a;奠定数学基础 1. 线性代数&#xff1a;AI的入门语言 学习目标&#xff1a;掌握向量、矩阵的基本概念及运算&#xff0c;理解线性空间、线性变换及特征值、特征向量的意义。学习建议&#xff1a;从基础教材入手&#xff0c;如《线性代数及其应用》&#x…

企业级视频拍摄与编辑SDK的全面解决方案

视频已成为企业传播信息、展示品牌、连接用户的重要桥梁&#xff0c;如何高效、专业地制作高质量视频内容&#xff0c;成为众多企业面临的共同挑战。美摄科技&#xff0c;作为视音频技术领域的创新先锋&#xff0c;以其强大的视频拍摄与编辑SDK&#xff0c;为企业量身打造了一站…

Sip for Mac:强大的屏幕取色软件

Sip for Mac是一款功能强大的屏幕取色工具软件&#xff0c;专为设计师、开发者和创作者打造。这款软件以其精准的取色功能和丰富的颜色管理选项而备受好评。 Sip的核心功能是提供多种取色工具&#xff0c;包括拾色器、取色板和屏幕取色等&#xff0c;使用户能够轻松地从屏幕上…

分享几种电商平台商品数据的批量自动抓取方式

在当今数字化时代&#xff0c;电商平台作为商品交易的重要渠道&#xff0c;其数据对于商家、市场分析师及数据科学家来说具有极高的价值。批量自动抓取电商平台商品数据成为提升业务效率、优化市场策略的重要手段。本文将详细介绍几种主流的电商平台商品数据批量自动抓取方式&a…

带哨兵位的双向循环链表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 带哨兵位的双向循环链表 一、双向循环链表二、带哨兵位的的双向循环链表结构&#xff1f;2 双向循环链表接口函数的实现2.1 用于调试打印链表的接口函数2.2 双向循环链表的初…

【C++指南】类和对象(下)

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注

探索贝塞尔曲线:计算机图形学中的关键技术

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 贝塞尔曲线是计算机图形学和设计领域中的重要工具。它们由皮埃尔贝塞…

Linux 查找命令

目录 1. 查看二进制文件 which 2. 查看指定文件 find ​2.1 文件名查找 2.2 文件大小查找 前面学习过的 Linux 命令&#xff0c;其实质是一个个的二进制可执行程序&#xff0c;与 Windows 系统中的 .exe 文件是一个意思。 1. 查看二进制文件 which 语法&#xff1a; w…

Origin制作线性拟合回归图

选中数据&#xff0c;点下方散点图 调整散点颜色 在分析中打开线性拟合回归 添加文本 显示上轴

【NPU 系列专栏 1.1 -- NPU TOPS 算力的计算方式】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 NPU 算力MAC 阵列简介MAC 阵列特点 MAC 阵列的结构MAC 阵列架构示例 MAC 阵列计算举例示例计算 TOPS 计算方法 NPU 算力 OpenCV 算法会消耗很大一部分自动驾驶芯片的算力&#xff0c;在车上堆摄像头的同时也需要堆TOPS&#xf…

卷积神经网络(二)-AlexNet

前言&#xff1a; AlexNet是2012年ImageNet竞赛冠军&#xff08;以领先第二名10%的准确率夺得冠军&#xff09;获得者Hinton和他的学生Alex Krizhevsky设计的,在ILSVRC-2010测试集上取得了top-1错误率37.5%,top-5错误率17.0%&#xff08;优于第二名的16.4%&#xff09;,明显优…

【微信小程序实战教程】之微信小程序 WXS 语法详解

WXS语法 WXS是微信小程序的一套脚本语言&#xff0c;其特性包括&#xff1a;模块、变量、注释、运算符、语句、数据类型、基础类库等。在本章我们主要介绍WXS语言的特性与基本用法&#xff0c;以及 WXS 与 JavaScript 之间的不同之处。 1 WXS介绍 在微信小程序中&#xff0c…

LeetCode 637, 67, 399

文章目录 637. 二叉树的层平均值题目链接标签思路代码 67. 二进制求和题目链接标签思路代码 399. 除法求值题目链接标签思路导入value 属性find() 方法union() 方法query() 方法 代码 637. 二叉树的层平均值 题目链接 637. 二叉树的层平均值 标签 树 深度优先搜索 广度优先…

四、GD32 MCU 常见外设介绍(9)9.FWDG 模块介绍

9.1.FWDG 简介 本章我们主要分析独立看门狗&#xff08;FWDG&#xff09;的功能框图和它的应用。独立看门狗用通俗一点的话来解释就是一个12位的递减计数器&#xff0c;当计数器的值从某个值一直减到0的时候&#xff0c;系统就会产生一个复位信号&#xff0c;即FWDGTRSTF。如果…

基于深度学习算法,支持再学习功能,不断提升系统精准度的智慧地产开源了。

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…

Java基础巩固——JDK 8、9新增接口的特性(接口中定义非抽象方法、静态方法和私有方法)

#Java学了这么久&#xff0c;项目也做了&#xff1f;基础知识还不巩固&#xff1f;快来关注我的这篇系列博客——Java基础复习巩固吧# 目录 引言 一、JDK8新特性&#xff1a;允许在接口中定义非抽象方法和静态方法。 注意事项 二、JDK9新特性&#xff1a;允许在接口中定义p…

ScriptableObject使用

资料 Scripting/Create modular game architecture in Unity with ScriptableObjects 脚本文档 基础 SO是一个Unity对象&#xff0c;继承UnityEngine.Objec&#xff0c; SO最大的特点是实例文件可共享&#xff0c;有点类似静态数据&#xff0c;同一个实例文件可被多个对象引…