经典双指针算法试题(二)

文章目录
- 一、有效三角形的个数
- 1、题目讲解
- 2、讲解算法原理
- 3、代码实现
- 二、查找总价格为目标值的两个商品
- 1、题目讲解
- 2、讲解算法原理
- 3、代码实现
- 三、三数求和
- 1、题目讲解
- 2、讲解算法原理
- 3、代码实现
- 四、四数求和
- 1、题目讲解
- 2、讲解算法原理
- 3、代码实现
一、有效三角形的个数
1、题目讲解

2、讲解算法原理


3、代码实现
class Solution {
public:int triangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int ret=0,n=nums.size();for(int i=n-1;i>=2;i--){int begin=0,end=i-1;while(begin<end){if(nums[begin]+nums[end]>nums[i]){ret+=(end-begin);end--;}elsebegin++;}}return ret;}
};
二、查找总价格为目标值的两个商品
1、题目讲解

2、讲解算法原理

3、代码实现
class Solution {
public:vector<int> twoSum(vector<int>& price, int target) {int left=0,right=price.size()-1;while(left<right){int sum=price[left]+price[right];if(sum>target) right--;else if(sum< target) left++;else break;}return {price[left],price[right]}; }
};
三、三数求和
1、题目讲解


2、讲解算法原理


3、代码实现
class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(),nums.end());vector<vector<int>> ret;int n=nums.size();for(int i=0;i<n-2;){if(nums[i]>0) break;int left=i+1,right=n-1,target=-nums[i];while(left<right){int sum=nums[left]+nums[right];if(sum>target) right--;else if(sum<target) left++;else {ret.push_back({nums[i],nums[left],nums[right]});left++;right--;while(left<right && nums[left]==nums[left-1]) left++;while(left<right && nums[right]==nums[right+1]) right--;}}i++;while(i<n && nums[i]==nums[i-1]) i++;}return ret;}
};
四、四数求和
1、题目讲解

2、讲解算法原理

3、代码实现
class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());int n=nums.size();vector<vector<int>> ret;for(int i=0;i<n;){for(int j=i+1;j<n;){long long left=j+1,right=n-1,target1=(long long)target-nums[i]-nums[j];while(left<right){int sum=nums[left]+nums[right];if(sum>target1) right--;else if(sum<target1) left++;else {ret.push_back({nums[i],nums[j],nums[left],nums[right]});left++;right--;while(left<right && nums[left]==nums[left-1]) left++;while(left<right && nums[right]==nums[right+1]) right--;}}j++;while(j<n && nums[j]==nums[j-1]) j++;}i++;while(i<n && nums[i]==nums[i-1]) i++;}return ret;}
};
相关文章:
经典双指针算法试题(二)
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、有效三角形的个数1、题目讲解2、讲解算法原理3、代码实现 二、查找总价格为目标值的两个商…...
MySQL -- DQL
1、select查询列和列名: --查询所有员工信息(*通配符,默认查询所有的列) select * from emp;--查询员工的姓名 select ename from emp;--查询员工的薪资 select sal from emp;--查询员工的姓名和薪资 select ename , sal from emp; select ename sal fr…...
高防CDN:保障网络安全的未来之路
在当前数字化飞速发展的时代,网络安全问题日益成为企业和个人关注的焦点。高防CDN(Content Delivery Network,内容分发网络)作为一种专注于防御网络攻击的解决方案,尽管在技术上表现卓越,但其普及却面临一系…...
使用wxPython和PyMuPDF合并PDF文档并自动复制到剪贴板
导语:处理大量的PDF文档可能会变得复杂和耗时。但是,使用Python编程和一些强大的库,如wxPython和PyMuPDF,可以使这个任务变得简单而高效。本文将详细解释一个示例代码,展示如何使用这些库来创建一个可以选择文件夹中的…...
Redis篇---第十四篇
系列文章目录 文章目录 系列文章目录前言一、为什么Redis的操作是原子性的,怎么保证原子性的?二、了解Redis的事务吗?四、Redis 的数据类型及使用场景前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…...
python之文件操作
文件的读取、修改、写入 知识点:不可以使用for循环生成变量,替代方式:将每次循环生成的数据添加到列表中,再对列表进行操作 例子:根据输入的环境名称操作hosts文件,注释掉其他环境 #env1 127.0.0.1 127.0.…...
android实时投屏软件QtScrcpy
QtScrcpy 可以通过 USB / 网络连接Android设备,并进行显示和控制。无需root权限。 同时支持 GNU/Linux ,Windows 和 MacOS 三大主流桌面平台。 QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制…...
LeetCode - 622. 设计循环队列(C语言,顺序存储结构,配图)
目录 编辑定义结构体: 1. MyCircularQueue(k): 构造器,设置队列长度为 k 2. Front: 从队首获取元素。如果队列为空,返回 -1 3. Rear: 获取队尾元素。如果队列为空,返回 -1 4. enQueue(value): 向循环队列插入一个元素。…...
在 Qt 框架中,有许多内置的信号可用于不同的类和对象\triggered
在 Qt 框架中,有许多内置的信号可用于不同的类和对象 以下是一些常见的内置信号的示例: clicked():按钮(QPushButton、QToolButton 等)被点击时触发的信号。 pressed() 和 released():按钮被按下和释放时…...
springBoot中starter
springBoot项目中引入starter 项目引入xxljob,仅需要导入对应的starter包,即可进行快速开发 <dependency><groupId>com.ydl</groupId><artifactId>xxl-job-spring-boot-starter</artifactId><version>0.0.1-SNAPS…...
Linux学习笔记-Ubuntu下使用Crontab设置定时任务
文章目录 一、概述二、基于crontab的设置2.1 基本命令说明2.2 使用-e指令编辑命令2.2.1 进入编辑模式2.2.2 指令信息格式2.2.4 开启日志1) 修改rsyslog配置文件2) 重启rsyslog3) 查看日志 2.2.3 设置后之后重启服务 三、示例3.1 每隔一分钟往文件中日期3.2 使用-l查看任务列表3…...
动态规划求数组中相邻两数的最小差值( 即相差的绝对值 ) java 实现
算法的核心是:计算当前数和前一个数的差值,用该差值和以前最小的连续数的差值作比较;如果当前的差值更小,则发现了更小的连续数的差值;如果当前的差值更大,则沿用以前的最小连续数差值作为新的最小连续数差值。 MinDif…...
webGL开发微信小游戏
WebGL 是一种用于在浏览器中渲染 2D 和 3D 图形的 JavaScript API。微信小游戏本质上是在微信环境中运行的基于 Web 技术的应用,因此你可以使用 WebGL 来开发小游戏。以下是基于 WebGL 开发微信小游戏的一般步骤,希望对大家有所帮助。北京木奇移动技术有…...
leetcode面试经典150题——29 三数之和
题目:盛最多水的容器 描述: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意…...
数据分析基础之《jupyter notebook工具》
一、安装库 1、linux库 yum install python3-devel 2、python库 pip3 install -U matplotlib pip3 install -U numpy pip3 install -U pandas pip3 install -U TA-Lib pip3 install -U tables pip3 install -U notebook 3、如果TA-Lib安装不上,先手动安装依赖库 …...
Android Studio Error “Unsupported class file major version 61“---异常信息记录
编译时异常信息 原因及解决办法 问题出在JAVA 17上,并且使用的Gradle JDK是:Android Studio java home版本17.0.1将其更改为:Android Studio默认JDK版本11.0.10 即可解决 操作步骤 1 2 3...
javaScript 内存管理
1 js 内存机制 内存空间:栈内存(stack)、堆内存(heap) 栈内存:所有原始数据类型都存储在栈内存中,如果删除一个栈原始数据,遵循先进后出;如下图:a 最先进栈&…...
Idea2023 Springboot web项目正常启动,页面展示404解决办法
Idea2023 Springboot web项目正常启动,页面展示404解决办法 问题: 项目启动成功,但是访问网页,提示一直提示重定向次数过多,404 解决方法 在IDEA的Run/Debug Configurations窗口下当前的Application模块的Working directory中添…...
Android手机如何用Charles抓包HTTPS接口
对Charles的安装和使用,这里就不重复介绍了,之前有介绍Charles工具。 本文重点介绍在Android手机上如何配置抓包环境 1.获取Charles配置 去Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser 查…...
Oracle for Windows安装和配置——Oracle for Windows net配置
2.3. Oracle for Windows net配置 2.3.1. Oracle net配置 2.3.1.1. Oracle net简介 前述章节中,我们只是安装了数据库软件,创建了数据库,测试在服务器本地连接查询数据库。但还不能通过网络远程连接访问数据库,因为我们还没配置用来远程连接访问该数据库的组件Oracle ne…...
Clawdentity:为AI Agent构建去中心化身份与安全通信层
1. 项目概述:Clawdentity,为AI Agent构建去中心化身份与通信层如果你正在开发AI Agent应用,或者尝试将多个独立的智能体串联起来工作,那么“如何让它们安全、可靠地相互通信”这个问题,大概率已经让你头疼过。直接暴露…...
收藏 | 零基础入门:AI大模型应用开发,小白也能抓住风口高薪就业!
文章对比了传统算法工程师和AI大模型应用开发工程师,前者是AI基建者,专注底层算法研发,后者是场景魔术师,擅长将大模型落地应用。文章指出,大模型应用开发入门门槛低,需求大,薪资高,…...
llm-x:一站式大语言模型本地部署与管理工具详解
1. 项目概述:一个为大型语言模型量身定制的“瑞士军刀”最近在折腾大语言模型(LLM)本地部署和推理的朋友,估计都绕不开一个核心痛点:模型文件的管理。从Hugging Face上下载的模型,动辄几个G甚至几十个G&…...
开源GPGPU处理器NyuziProcessor:从架构探索到FPGA部署实战
1. 项目概述:一个开源的GPGPU处理器探索平台如果你对计算机体系结构,特别是图形处理器(GPU)的内部工作原理充满好奇,或者你一直想亲手“造”一个处理器,但又觉得从零开始过于庞大,那么NyuziProc…...
事件驱动架构中的状态机模式:ralph-loop实现异步工作流管理
1. 项目概述:一个“自循环”的Ralph最近在折腾数据管道和API集成时,我遇到了一个挺有意思的项目:Endogen/ralph-loop。乍一看名字,你可能会有点懵,ralph?这不是个名字吗?怎么还“loop”上了&…...
终极解决方案:高效实现Android手机USB网络共享到Mac的完整指南
终极解决方案:高效实现Android手机USB网络共享到Mac的完整指南 【免费下载链接】HoRNDIS Android USB tethering driver for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/ho/HoRNDIS 你是否曾经在Mac上尝试连接Android手机的网络共享,却遇…...
【紧急预警】AISMM学术评估矩阵已接入教育部学科评估预演系统——你的实验室是否已在首批灰度名单中?
更多请点击: https://intelliparadigm.com 第一章:2026奇点智能技术大会:AISMM与学术研究 AISMM框架的核心定位 AISMM(Autonomous Intelligence Semantic Modeling & Mapping)是2026奇点智能技术大会首次公开的新…...
低预算外贸独立站的工程化交付:模板复用、服务器打包与5天上线流程
低预算外贸独立站(3,000-5,000 元区间)在企业建站市场占比超过 30%。行业内一些把这个细分领域工程化做到位的团队(如北京乐兮创想科技等)已经将3000元外贸建站作为标准化产品包交付,但这个细分领域的工程化程度普遍很…...
EBERLE E-41/051431000000N控制器模块
EBERLE E-41/051431000000N控制器模块专为工业自动化设计,结构紧凑,性能稳定。尺寸紧凑:节省控制柜空间,安装方便。逻辑处理:快速执行开关量控制与数据运算。总线支持:集成RS-485、Modbus等常用通信接口。宽…...
游戏分散在不同平台?Playnite一站式管理解决方案让你告别混乱![特殊字符]
游戏分散在不同平台?Playnite一站式管理解决方案让你告别混乱!🎮 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface…...
