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

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

在这里插入图片描述


📘北尘_:个人主页

🌎个人专栏:《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》

☀️走在路上,不忘来时的初心

文章目录

  • 一、有效三角形的个数
    • 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;}
};

相关文章:

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

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、有效三角形的个数1、题目讲解2、讲解算法原理3、代码实现 二、查找总价格为目标值的两个商…...

MySQL -- DQL

1、select查询列和列名&#xff1a; --查询所有员工信息(*通配符&#xff0c;默认查询所有的列) select * from emp;--查询员工的姓名 select ename from emp;--查询员工的薪资 select sal from emp;--查询员工的姓名和薪资 select ename , sal from emp; select ename sal fr…...

高防CDN:保障网络安全的未来之路

在当前数字化飞速发展的时代&#xff0c;网络安全问题日益成为企业和个人关注的焦点。高防CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;作为一种专注于防御网络攻击的解决方案&#xff0c;尽管在技术上表现卓越&#xff0c;但其普及却面临一系…...

使用wxPython和PyMuPDF合并PDF文档并自动复制到剪贴板

导语&#xff1a;处理大量的PDF文档可能会变得复杂和耗时。但是&#xff0c;使用Python编程和一些强大的库&#xff0c;如wxPython和PyMuPDF&#xff0c;可以使这个任务变得简单而高效。本文将详细解释一个示例代码&#xff0c;展示如何使用这些库来创建一个可以选择文件夹中的…...

Redis篇---第十四篇

系列文章目录 文章目录 系列文章目录前言一、为什么Redis的操作是原子性的,怎么保证原子性的?二、了解Redis的事务吗?四、Redis 的数据类型及使用场景前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…...

python之文件操作

文件的读取、修改、写入 知识点&#xff1a;不可以使用for循环生成变量&#xff0c;替代方式&#xff1a;将每次循环生成的数据添加到列表中&#xff0c;再对列表进行操作 例子&#xff1a;根据输入的环境名称操作hosts文件&#xff0c;注释掉其他环境 #env1 127.0.0.1 127.0.…...

android实时投屏软件QtScrcpy

QtScrcpy 可以通过 USB / 网络连接Android设备&#xff0c;并进行显示和控制。无需root权限。 同时支持 GNU/Linux &#xff0c;Windows 和 MacOS 三大主流桌面平台。 QtScrcpy: Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制…...

LeetCode - 622. 设计循环队列(C语言,顺序存储结构,配图)

目录 ​编辑定义结构体&#xff1a; 1. MyCircularQueue(k): 构造器&#xff0c;设置队列长度为 k 2. Front: 从队首获取元素。如果队列为空&#xff0c;返回 -1 3. Rear: 获取队尾元素。如果队列为空&#xff0c;返回 -1 4. enQueue(value): 向循环队列插入一个元素。…...

在 Qt 框架中,有许多内置的信号可用于不同的类和对象\triggered

在 Qt 框架中&#xff0c;有许多内置的信号可用于不同的类和对象 以下是一些常见的内置信号的示例&#xff1a; clicked()&#xff1a;按钮&#xff08;QPushButton、QToolButton 等&#xff09;被点击时触发的信号。 pressed() 和 released()&#xff1a;按钮被按下和释放时…...

springBoot中starter

springBoot项目中引入starter 项目引入xxljob&#xff0c;仅需要导入对应的starter包&#xff0c;即可进行快速开发 <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 实现

算法的核心是&#xff1a;计算当前数和前一个数的差值,用该差值和以前最小的连续数的差值作比较&#xff1b;如果当前的差值更小&#xff0c;则发现了更小的连续数的差值&#xff1b;如果当前的差值更大&#xff0c;则沿用以前的最小连续数差值作为新的最小连续数差值。 MinDif…...

webGL开发微信小游戏

WebGL 是一种用于在浏览器中渲染 2D 和 3D 图形的 JavaScript API。微信小游戏本质上是在微信环境中运行的基于 Web 技术的应用&#xff0c;因此你可以使用 WebGL 来开发小游戏。以下是基于 WebGL 开发微信小游戏的一般步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有…...

leetcode面试经典150题——29 三数之和

题目&#xff1a;盛最多水的容器 描述&#xff1a; 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 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安装不上&#xff0c;先手动安装依赖库 …...

Android Studio Error “Unsupported class file major version 61“---异常信息记录

编译时异常信息 原因及解决办法 问题出在JAVA 17上&#xff0c;并且使用的Gradle JDK是&#xff1a;Android Studio java home版本17.0.1将其更改为&#xff1a;Android Studio默认JDK版本11.0.10 即可解决 操作步骤 1 2 3...

javaScript 内存管理

1 js 内存机制 内存空间&#xff1a;栈内存&#xff08;stack&#xff09;、堆内存&#xff08;heap&#xff09; 栈内存&#xff1a;所有原始数据类型都存储在栈内存中&#xff0c;如果删除一个栈原始数据&#xff0c;遵循先进后出&#xff1b;如下图&#xff1a;a 最先进栈&…...

Idea2023 Springboot web项目正常启动,页面展示404解决办法

Idea2023 Springboot web项目正常启动,页面展示404解决办法 问题&#xff1a; 项目启动成功&#xff0c;但是访问网页&#xff0c;提示一直提示重定向次数过多&#xff0c;404 解决方法 在IDEA的Run/Debug Configurations窗口下当前的Application模块的Working directory中添…...

Android手机如何用Charles抓包HTTPS接口

对Charles的安装和使用&#xff0c;这里就不重复介绍了&#xff0c;之前有介绍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. 项目概述&#xff1a;Clawdentity&#xff0c;为AI Agent构建去中心化身份与通信层如果你正在开发AI Agent应用&#xff0c;或者尝试将多个独立的智能体串联起来工作&#xff0c;那么“如何让它们安全、可靠地相互通信”这个问题&#xff0c;大概率已经让你头疼过。直接暴露…...

收藏 | 零基础入门:AI大模型应用开发,小白也能抓住风口高薪就业!

文章对比了传统算法工程师和AI大模型应用开发工程师&#xff0c;前者是AI基建者&#xff0c;专注底层算法研发&#xff0c;后者是场景魔术师&#xff0c;擅长将大模型落地应用。文章指出&#xff0c;大模型应用开发入门门槛低&#xff0c;需求大&#xff0c;薪资高&#xff0c;…...

llm-x:一站式大语言模型本地部署与管理工具详解

1. 项目概述&#xff1a;一个为大型语言模型量身定制的“瑞士军刀”最近在折腾大语言模型&#xff08;LLM&#xff09;本地部署和推理的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;模型文件的管理。从Hugging Face上下载的模型&#xff0c;动辄几个G甚至几十个G&…...

开源GPGPU处理器NyuziProcessor:从架构探索到FPGA部署实战

1. 项目概述&#xff1a;一个开源的GPGPU处理器探索平台如果你对计算机体系结构&#xff0c;特别是图形处理器&#xff08;GPU&#xff09;的内部工作原理充满好奇&#xff0c;或者你一直想亲手“造”一个处理器&#xff0c;但又觉得从零开始过于庞大&#xff0c;那么NyuziProc…...

事件驱动架构中的状态机模式:ralph-loop实现异步工作流管理

1. 项目概述&#xff1a;一个“自循环”的Ralph最近在折腾数据管道和API集成时&#xff0c;我遇到了一个挺有意思的项目&#xff1a;Endogen/ralph-loop。乍一看名字&#xff0c;你可能会有点懵&#xff0c;ralph&#xff1f;这不是个名字吗&#xff1f;怎么还“loop”上了&…...

终极解决方案:高效实现Android手机USB网络共享到Mac的完整指南

终极解决方案&#xff1a;高效实现Android手机USB网络共享到Mac的完整指南 【免费下载链接】HoRNDIS Android USB tethering driver for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/ho/HoRNDIS 你是否曾经在Mac上尝试连接Android手机的网络共享&#xff0c;却遇…...

【紧急预警】AISMM学术评估矩阵已接入教育部学科评估预演系统——你的实验室是否已在首批灰度名单中?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;2026奇点智能技术大会&#xff1a;AISMM与学术研究 AISMM框架的核心定位 AISMM&#xff08;Autonomous Intelligence Semantic Modeling & Mapping&#xff09;是2026奇点智能技术大会首次公开的新…...

低预算外贸独立站的工程化交付:模板复用、服务器打包与5天上线流程

低预算外贸独立站&#xff08;3,000-5,000 元区间&#xff09;在企业建站市场占比超过 30%。行业内一些把这个细分领域工程化做到位的团队&#xff08;如北京乐兮创想科技等&#xff09;已经将3000元外贸建站作为标准化产品包交付&#xff0c;但这个细分领域的工程化程度普遍很…...

EBERLE E-41/051431000000N控制器模块

EBERLE E-41/051431000000N控制器模块专为工业自动化设计&#xff0c;结构紧凑&#xff0c;性能稳定。尺寸紧凑&#xff1a;节省控制柜空间&#xff0c;安装方便。逻辑处理&#xff1a;快速执行开关量控制与数据运算。总线支持&#xff1a;集成RS-485、Modbus等常用通信接口。宽…...

游戏分散在不同平台?Playnite一站式管理解决方案让你告别混乱![特殊字符]

游戏分散在不同平台&#xff1f;Playnite一站式管理解决方案让你告别混乱&#xff01;&#x1f3ae; 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface…...