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

news2024/11/15 13:45:38

一. 题目链接

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

解法(双指针 - 对撞指针):

算法思路:

注意到本题是升序的数组,因此可以用「对撞指针」优化时间复杂度。

算法流程:

初始化left ,right 分别指向数组的左右两端(这里不是我们理解的指针,而是数组的下标),当left < right 的时候,⼀直循环

i. 当nums[left] + nums[right] == target 时:

  • 说明找到结果,记录结果,并且返回;

ii. 当nums[left] + nums[right] < target 时:

  • 对于nums[left]而言,此时nums[right] 相当是nums[left] 能碰到的最大值(别忘了,这是升序数组)。如果此时不符合要求,说明在这个数组里⾯, 没有别的数符合nums[left] 的要求了(最大的数都满足不了你,你已经没救了)。 因此,我们可以大胆舍去这个数,让left++ ,去比较下⼀组数据;
  • 那对于nums[right]而言,由于此时两数之和是小于目标值的, nums[right] 还可以选择比nums[left]大的值继续努力达到目标值,因此right 指针我们按兵不动;

iii. 当nums[left] + nums[right] > target 时:

  • 同理我们可以舍去,nums[right](最小的数都满足不了你,你也没救了)。让right-- ,继续比较下⼀组数据,而left 指针不变(因为他还是可以去匹配比nums[right] 更小的数的)。

二. 动画解释 

三. 代码解释 

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};
    }
};

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

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

相关文章

el-form 表单设置某个参数非必填验证

html <el-form ref"form" :rules"rules"><el-form-item prop"tiktokEmail" label"邮箱" ><el-input v-model"form.tiktokEmail" placeholder"邮箱" ></el-input></el-form-item&…

一篇了解reactor框架特性

一篇了解reactor框架特性 本文档的一些典型的名词如下&#xff1a; Publisher&#xff08;发布者&#xff09;、Subscriber&#xff08;订阅者&#xff09;、Subscription&#xff08;订阅 n.&#xff09;、subscribe&#xff08;订阅 v.&#xff09;。event/signal&#xff0…

一文搞懂 One-Hot Encoding(独热编码)

文章目录 前言 1、独热编码的原理 2、独热编码的分类 3、独热编码的应用 前言 本文将从独热编码的原理、独热编码的分类、独热编码的应用三个方面&#xff0c;来展开介绍独热编码 One-Hot Encoding。 1、独热编码的原理 特征数字化&#xff1a;将分类变量&#xff08;或称为离…

手机测试之-adb

一、Android Debug Bridge 1.1 Android系统主要的目录 1.2 ADB工具介绍 ADB的全称为Android Debug Bridge,就是起到调试桥的作用,是Android SDK里面一个多用途调试工具,通过它可以和Android设备或模拟器通信,借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多…

艾体宝案例 | 使用Redis和Spring Ai构建rag应用程序

随着AI技术的不断进步&#xff0c;开发者面临着如何有效利用现有工具和技术来加速开发过程的挑战。Redis与Spring AI的结合为Java开发者提供了一个强大的平台&#xff0c;以便快速构建并部署响应式AI应用。探索这一整合如何通过简化的开发流程&#xff0c;让开发者能够更专注于…

python——井字棋游戏——登入注册界面

本篇文章只讲解登入和注册页面&#xff0c;在后面的文章中会讲解井字棋游戏&#xff0c;然后把井字棋和登入界面进行连接&#xff0c;整合成一个完整的游戏。 登入注册界面在本篇文章的末尾。 1.实现登入界面 &#xff08;1&#xff09;导入图片 把这张图片存储在与代码路径…

小程序的合同是怎么样写的

​很多商家找第三方做小程序都遭遇到了各种问题&#xff0c;如访问速度慢、服务器关闭、反复收费等。如果当初商家找的是正规的第三方服务商&#xff0c;双方签订了明确的合同条款&#xff0c;出现任何问题后&#xff0c;相信都能够进行解决。下面将具体介绍合同内容&#xff0…

面试高频:什么情况下要用到缓存?如何应对缓存穿透、击穿及雪崩?

一、为什么要使用内存数据库&#xff1f; 我们先来看一下以往单体的Web系统架构图是什么样的&#xff1a; 从图中可以看出&#xff0c;早期的单体架构基本上是以业务为导向&#xff0c;同时用户群体不是很大&#xff0c;这种单体的架构基本上可以应付大多数使用场景。但随着互…

Springboot+Vue项目-基于Java+MySQL的商业辅助决策系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

数据分析:生存分析原理和应用实例

介绍 生存分析的目的是分析某个时间点的“生存概率”是多少。基于这样的研究目的,需要提供生存数据,它是一种由不同的开始时间和结束时间组成的事件-时间的数据,比如在癌症研究领域,研究手术到死亡的过程、治疗到疾病进展等等。 在开展生存分析前,需要了解什么是删失(c…

博途安装【PLC】

1【安装】 mp.weixin.qq.com Pro功能强于Adv 关于Prof版本和Adv版本的区别&#xff0c;可以参考下图&#xff0c;专业版是包含高级版的&#xff0c;我们选择专业版进行安装 双击TIA_Portal_STEP7_Prof_Safety_WINCC_Prof_V16.exe进行安装 解压安装 如果电脑死循环重启&#…

Python-100-Days: Day05 Construct Program Logical

Python的核心语言元素&#xff1a; &#xff08;变量、类型、运算符、表达式、分支结构、循环结构&#xff09; 之后&#xff0c;必须做的一件事情就是尝试用所学知识去解决现实中的问题&#xff0c;换句话说就是锻炼自己把用人类自然语言描述的算法&#xff08;解决问题的方法…

redis基础(一)

启动与关闭 启动命令在/usr/local/bin目录 服务端后台启动&#xff1a;redis-server opt/redis-6.2.1/redis.conf 客户端连接&#xff1a;执行 redis-cli 关闭操作 ​ 方式1&#xff1a;进入终端后关闭 ​ 方式2&#xff1a;直接kill 掉进程 方式3&#xff1a;通过实例关闭 …

蓝桥杯ctf2024 部分wp

数据分析 1. packet 密码破解 1. cc 逆向分析 1. 欢乐时光 XXTEA #include<stdio.h> #include<stdint.h> #define DELTA 0x9e3779b9 #define MX (((z>>5^y<<2)(y>>3^z<<4))^((sum^y)(key[(p&3)^e]^z))) void btea(unsigned int* v…

ElasticSearch自动补全

一、拼音分词器&#xff1a; 当用户在搜索框输入字符时&#xff0c;我们应该提示出与该字符有关的搜索项&#xff0c;如图&#xff1a; 这种根据用户输入的字母&#xff0c;提示完整词条的功能&#xff0c;就是自动补全了。 GET /_analyze {"text":"我爱螺蛳粉…

快手AI小快走红:评论区里的聊天艺术家,让百万用户欲罢不能!

快手官方推出的AI互动小助手「AI小快」在短视频平台上掀起了一股热潮。那么&#xff0c;这个被誉为“评论区著名聊天艺术家”的AI小快究竟有何魅力呢&#xff1f;让我们一起来看看吧&#xff01; AI-321 | 专注全球AI工具推荐的网站 AI工具集 | 人工智能工具箱 | 全球顶尖AI工…

电磁兼容(EMC):详解压敏电阻的防静电性能如何

目录 1. 压敏电阻性能 2. 静电放电性能评价指标 3. 压敏电阻防静电实验数据 4. 总结 压敏电阻是一种防浪涌型保护器件&#xff0c;常用在防雷击浪涌以及电网浪涌电压的保护电路中。那压敏电阻的防静电性能如何呢&#xff1f;能不能像防电涌那般防住静电放电能量&#xff1f;…

回溯算法练习day.5

491.非递减子序列 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重…

2024全国大学生高新技术竞赛——算法智星挑战赛 解题报告(流水账版) | 珂学家

前言 评价 因为第一届的缘故吧&#xff0c;导致这场比赛异常的简单。所以不太好评价这块。 怎么说呢&#xff1f; 体验有点差 题目难度没有区分度有两题还存在SPJ判定问题&#xff0c;导致赛时没一人过。 题目分布&#xff0c;简单题占大部分&#xff0c;中等级占一小部分&…

【Linux】HTTP协议1

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 目录 &#x1f449;&#x1f3fb;http概念初识http协议格式 &#x1f449;&#x1f3fb;URL&#x1f449;&#x1f3fb;简单实现http协议&#xff…