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

【C++题目】7.双指针_和为 s 的两个数字

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:
    • 图解


题目链接:

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


题目描述:

bf3710fc5731e7753df89b664e052d0e


解法

解法一(暴力解法,会超时)

两层 for 循环列出所有两个数字的组合,判断是否等于目标值。

外层 for 循环依次枚举第一个数 a

内层 for 循环依次枚举第二个数 b ,让它与 a 匹配;我们挑选第二个数的时候,可以不从第一个数开始选,因为 a 前面的数我们都已经在之前考虑过了。因此,我们可以从 a 往后的数开始列举。

然后将挑选的两个数相加,判断是否符合目标值。

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

利用单调性,使用双指针算法解决问题

58526e9691445db584ed6c89e40aa5a5

如果2+21<30,那么2+7,2+11等等都不用计算了,因为肯定比2+21小。

left+right<tleft就要往后移动一位。

8722d00541ca322f6f486bacb06f4eb8

left+right<tleft往后移动一位。

686d41b3163332075d63cd7df736e5d9

left+right>tright往前移动一位。

78d39f526b9be96c8d1a5bef41da7dd3

left+right==t,返回结果。


C++ 算法代码:

解法一(暴力解法,会超时)

class Solution {public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; i++) { // 第一层循环从前往后列举第一个数for (int j = i + 1; j < n; j++) { // 第二层循环从 i 位置之后列举第二个数if (nums[i] + nums[j] == target) // 两个数的和等于目标值,说明我们已经找到结果了return {nums[i], nums[j]};}}return {-1, -1};}
};

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

class Solution 
{
public:vector<int> twoSum(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;while(left < right){int sum = nums[left] + nums[right];if(sum > target){right--;}else if(sum < target){left++;}else{return{nums[left], nums[right]};}}// 没有结果就照顾编译器,随便返回个东西。return {-4941, -1};}
};

图解

nums=[2,7,11,15,19,21],t=30

58526e9691445db584ed6c89e40aa5a5

  1. left=0,right=5

    left < right进入while循环

    sum=nums[0] + nums[5]=2+21=23<30

    left++;left=1

8722d00541ca322f6f486bacb06f4eb8

  1. left=1,right=5

    left < right进入while循环

    sum=nums[1] + nums[5]=7+21=28<30

    left++;left=2

686d41b3163332075d63cd7df736e5d9

  1. left=2,right=5

    left < right进入while循环

    sum=nums[2] + nums[5]=11+21=32>30

    right--;right=4

78d39f526b9be96c8d1a5bef41da7dd3

  1. left=2,right=4

    left < right进入while循环

    sum=nums[2] + nums[4]=11+19=30==30

    return{11, 19};

  2. 因为是顺序排列的,所以再次移动得到的不会刚好符合,或者得到的和本次一样,所以程序结束。

相关文章:

【C++题目】7.双指针_和为 s 的两个数字

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; LCR 179.查找总价格为目标值的两个商品 题目描述&#xff1a; 解法 解法一&#xff08;暴力解法&#xff0c;会超时&#xff09; 两层 for 循环列出所有两个数字的组合…...

网络通信1-传输层

tcp的三次握手&#xff1a; TCP&#xff08;传输控制协议&#xff09;的三次握手是建立一个可靠的连接的过程。这个过程中涉及到的主要参数包括&#xff1a; 序列号&#xff08;Sequence Number, SEQ&#xff09;: 在第一次握手中&#xff0c;发起方&#xff08;客户端&#xf…...

【JAVA源码授权】

悯农二首 代码混淆加密 Class 文件许可证管理数字签名API 调用限制防止反编译使用私有库法律保护动态授权 其一 春种一粒粟&#xff0c;秋收万颗子。 四海无闲田&#xff0c;农夫犹饿死。 其二 锄禾日当午&#xff0c;汗滴禾下土。 谁知盘中餐&#xff0c;粒粒皆辛苦 代码混淆 …...

tauri开发软件中,使用tauri自带的api用浏览器打开指定的url链接

有能力的可以看官方文档&#xff1a;shell | Tauri Apps 就是使用这个api来打开指定的url链接&#xff0c;要在tauri.config.json中配置打开这个api&#xff1a; 然后在前端页面中导入使用&#xff1a; import { open } from tauri-apps/api/shell; // opens the given URL o…...

OpenCV-图像拼接

文章目录 一、基本原理二、步骤三、代码实现1.定义函数2.读取图像3.图像配准&#xff08;1&#xff09;.特征点检测&#xff08;2&#xff09;.特征匹配 4.透视变换5.图像拼接 四、图像拼接的注意事项 图像拼接是一种将多张有重叠部分的图像合并成一张无缝的全景图或高分辨率图…...

C++【类和对象】(取地址运算符重载与实现Date类)

文章目录 取地址运算符重载const成员函数取地址运算符重载 Date类的实现Date.hDate.cpp1.检查日期合法性2. 构造函数/赋值运算符重载3.得到某月的天数4. Date类 - 天数的操作4.1 日期 天数4.2 日期 天数4.3 日期 - 天数4.4 日期 - 天数 5. Date的前后置/--5.1 前置5.2 后置5.…...

oracle 数据库中的异常和游标管理

异常和游标管理 游标&#xff1a; 用来查询数据库&#xff0c;获取记录集合&#xff08;结果集&#xff09;的指针&#xff0c;可以让开发者一次访问一行结果集&#xff0c;在每条结果集上作操作。 分类&#xff1a; 静态游标&#xff1a; 分为显式游标和隐式游标。 REF游标&…...

关于python 日志设定为INFO 但是DEBUG仍旧写入的问题

问题&#xff1a;将logging设定为了INFO级别&#xff0c;但是在打印的时候发现jieba包中的DEBUG级别的信息还是出现了。 原因&#xff1a;在我引用的包中&#xff0c;一些python文件也使用了logging&#xff0c;我设定的INFO级别只能设定我当前使用的文件&#xff0c;而调用的包…...

TypeScript 语法基础 第一部分 类型

【视频链接】尚硅谷TypeScript教程&#xff08;李立超老师TS新课&#xff09; TypeScript TypeScript 语法基础 第二部分 类、接口、泛型1. 类型1.1 | 联合类型1.2 字面量类型1.3 any 任意类型1.4 unkown 类型1.5 as 类型断言1.6 object 对象类型1.7 { } 对象类型1.8 &#xff…...

GO Serial 学习与使用

文章目录 主要特性安装基本用法配置选项错误处理其他功能 github.com/goburrow/serial 是一个 Go 包&#xff0c;提供了一种简单的方式来与串口进行交互。以下是该包的主要特性和用法的简要概述&#xff1a; 主要特性 跨平台支持&#xff1a;支持 Windows、macOS 和 Linux。简…...

安卓app开发系列之-常用工具与库

✨ 关于我 ✨ &#x1f468;‍&#x1f4bb; Hi there! 我是 [Jamson]&#xff0c;一名热爱编程与技术的狂热者&#xff0c;致力于前后端的全栈独立软件系统开发。通过不断学习和实践&#xff0c;我希望将知识分享给更多的朋友们&#xff0c;和大家一起成长。 &#x1f4a1; &…...

视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?

视频汇聚EasyCVR视频监控平台&#xff0c;作为一款智能视频监控综合管理平台&#xff0c;凭借其强大的视频融合汇聚能力和灵活的视频能力&#xff0c;在各行各业的应用中发挥着越来越重要的作用。EasyCVR平台具备强大的拓展性和灵活性&#xff0c;支持多种视频流的外部分发&…...

uniapp视频禁止用户推拽进度条并保留进度条显示的解决方法——方案二

在uniapp项目中&#xff0c;使用<video>组件播放视频非常方便。默认情况下&#xff0c;视频组件会显示进度条&#xff0c;用户可以随意拖动进度条来控制视频播放进度。然而&#xff0c;在某些特定场景&#xff0c;如在线教育、广告宣传等&#xff0c;我们希望禁止用户拖动…...

mysql复合查询 -- 多表查询(介绍,笛卡尔积,使用),自连接(介绍,使用)

目录 多表查询 介绍 使用 表数据 显示雇员名,雇员工资,以及所在部门名 显示部门号为10的部门名,员工名,工资 自连接 介绍 场景 表数据 题目 子查询 自连接 多表查询 介绍 实际开发中往往数据来自不同的表&#xff0c;所以需要多表查询 语法: from 表1,表2 (笛卡…...

【个人笔记】数据一致性的解决方案

保证数据一致性&#xff1a;指保证redis里的数据和mysql的数据是一致的&#xff0c;不能说mysql更新了&#xff0c;但redis里面的还是旧的数据&#xff0c;反之亦然 先说结论&#xff1a;增删改的时候&#xff0c;把Redis中的缓存删了 为什么不先更新数据库&#xff0c;再更新…...

【WPF】多屏幕展示

使用环境为.Net Framework&#xff0c;如果有.Net 6的解决方案&#xff0c;欢迎交流。 话不多说&#xff0c;先上代码&#xff01; /// <summary>/// Window窗口展示设置/// </summary>/// <param name"monitor"></param>/// <param nam…...

vue admin 若依框架 解决无权限时进入死循环的问题 auths

核心原因&#xff1a; if (auths && auths.length > 0) { // like12 find bug,数组为空[]时依然会进入死循环 原来为&#xff1a;if (auths) // 获取用户信息getInfo({ commit, state }) {return new Promise((resolve, reject) > {getInfo(state.token).then(…...

kubernetes存储入门(kubernetes)

实验环境依旧是三个节点拉取镜像&#xff0c;然后在master节点拉取资源清单&#xff1a; 然后同步会话&#xff0c;导入镜像&#xff1b; 存储入门 ConfigMap volume卷--》volumemount&#xff08;挂载卷&#xff09; Glusterfs NFS ISCSI HostPath ConfigMap Secret E…...

局部代理有什么好处?为什么不使用全局代理?

1. 什么是局部代理与全局代理&#xff1f; 局部代理&#xff1a;局部代理只会对特定应用程序或特定的网络流量进行代理&#xff0c;而不会影响其他网络流量。例如&#xff0c;你可以设置浏览器使用代理&#xff0c;而其他应用程序如邮件客户端或游戏仍然使用本地网络连接。 全…...

ssm模糊知识点整合

一、参数绑定常用注解 RequestParam&#xff1a;用于将请求参数绑定到你的方法参数上。 PathVariable&#xff1a;用于将路径变量绑定到你的方法参数上。 RequestBody&#xff1a;用于将请求主体绑定到你的方法参数上&#xff0c;通常用于绑定POST请求的JSON或XML数据。 Req…...

vue-sonner:轻量级Vue通知组件的高效集成方案

vue-sonner&#xff1a;轻量级Vue通知组件的高效集成方案 【免费下载链接】vue-sonner &#x1f514; An opinionated toast component for Vue. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-sonner 项目概述 vue-sonner是一个为Vue和Nuxt应用设计的轻量级通知组…...

专科ENSP毕设实战:基于eNSP的校园网高可用架构设计与配置避坑指南

最近在帮几个专科的学弟学妹看他们的eNSP毕业设计&#xff0c;发现大家普遍卡在几个地方&#xff1a;拓扑画得挺漂亮&#xff0c;但一配置就各种不通&#xff1b;协议背得滚瓜烂熟&#xff0c;但实际命令敲下去就报错&#xff1b;最后答辩演示时&#xff0c;一拔线整个网络就瘫…...

OpenClaw学术研究助手:Qwen3-32B驱动的论文摘要与笔记整理

OpenClaw学术研究助手&#xff1a;Qwen3-32B驱动的论文摘要与笔记整理 1. 为什么需要本地化的AI研究助手&#xff1f; 去年冬天&#xff0c;我在整理一个跨学科研究项目的文献时陷入了困境。手头堆积了200多篇PDF论文&#xff0c;每篇都需要提取核心观点、记录关键数据&#…...

SCN随机配置网络模型在多特征分类预测中的应用

SCN随机配置网络模型SCN分类预测&#xff0c;SCN分类预测&#xff0c;多特征 输入模型。 多特征输入单输出的二分类及多分类模型。 程序内注释详细&#xff0c;直接替换数据就可以用。 程序语言为matlab&#xff0c;程序可出分类效果图&#xff0c;迭代优化图&#xff0c;混淆矩…...

【2026 最新】 MySQL 数据库安装教程(超详细图文版-纯享版)小白也可以安装成功!

一、前言 MySQL 作为开源关系型数据库的标杆&#xff0c;广泛应用于 Web 开发、数据分析等场景&#xff0c;是程序员必备的基础工具之一。很多新手安装MySQL时都会陷入“版本选择困难症”——版本太高怕兼容出问题&#xff0c;版本太低又缺功能、不支持主流框架&#xff0c;甚…...

Rasa Pro企业级对话AI实战:从安全扫描到密钥管理的完整配置指南

Rasa Pro企业级对话AI实战&#xff1a;从安全扫描到密钥管理的完整配置指南 在金融行业数字化转型浪潮中&#xff0c;智能对话系统已成为客户服务的核心组件。作为Rasa的商业化企业版本&#xff0c;Rasa Pro凭借其专业级的安全防护和可观测性功能&#xff0c;正在成为银行、保险…...

Llama-3.2V-11B-cot跨平台部署:从VMware虚拟机到物理服务器

Llama-3.2V-11B-cot跨平台部署&#xff1a;从VMware虚拟机到物理服务器 最近在帮几个团队部署Llama-3.2V-11B-cot这个多模态大模型&#xff0c;发现一个挺有意思的现象&#xff1a;大家的基础设施环境差别太大了。有的团队用的是VMware虚拟化集群&#xff0c;资源灵活但总觉得…...

OpenClaw+GLM-4.7-Flash自动化测试:3小时无人值守执行日志分析

OpenClawGLM-4.7-Flash自动化测试&#xff1a;3小时无人值守执行日志分析 1. 为什么选择这个技术组合 上个月团队新上线了一个分布式服务&#xff0c;每天产生近10GB的日志文件。最初我们尝试用传统脚本分析&#xff0c;但发现两个痛点&#xff1a;一是日志格式不统一&#x…...

政务金融AI获客合规难?矩阵跃动小陌GEO私有化部署,兼顾安全与效率

在数字经济与人工智能深度融合的2026年&#xff0c;AI已成为政务金融领域数字化转型的核心驱动力&#xff0c;尤其在获客场景中&#xff0c;AI技术能够实现精准触达、高效转化&#xff0c;大幅降低传统获客模式的人力与时间成本。但政务金融领域的特殊性的决定了其AI应用不能单…...

5分钟搞定COCO数据集下载与配置:从官网到百度云全攻略(附多线程加速技巧)

COCO数据集极速获取指南&#xff1a;从官方源到镜像站的全链路方案 刚接触计算机视觉的新手们&#xff0c;往往在第一步获取数据集时就遭遇"劝退"——动辄几十GB的COCO数据集&#xff0c;官网下载速度堪比蜗牛爬行&#xff0c;百度云限速让人抓狂。本文将分享一套经过…...