[leetcode 双指针]
1. 三数之和 M
:::details
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
示例 2:输入:nums = []
输出:[]
示例 3:输入:nums = [0]
输出:[]提示:
0 <= nums.length <= 3000
-105 <= nums[i] <= 105来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/3sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
因为题目要求输出的是value而不是index,所以为了简单起见,我们上来先来一个排序
然后利用双指针,两头往中间靠
注意去重
package mainimport ("fmt""sort"
)func threeSum(nums []int) [][]int {sort.Ints(nums)// fmt.Println(nums)res := [][]int{}n := len(nums)for i := 0; i < n-2; i++ {l, r := i+1, n-1if nums[i] > 0 {break}if i > 0 && nums[i] == nums[i-1] {// 去重continue}for l < r {in, ln, rn := nums[i], nums[l], nums[r]if in+ln+rn == 0 {res = append(res, []int{in, ln, rn})for l < r && nums[l] == ln {l++}for l < r && nums[r] == rn {r--}} else if in+ln+rn < 0 {l++} else {r--}}}return res
}func main() {nums := []int{-1, 0, 1, 2, -1, -4}fmt.Println(threeSum(nums))
}
:::
2. 四数之和 M
:::details
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):
0 <= a, b, c, d < n
a、b、c 和 d 互不相同
nums[a] + nums[b] + nums[c] + nums[d] == target
你可以按 任意顺序 返回答案 。示例 1:
输入:nums = [1,0,-1,0,-2,2], target = 0
输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]
示例 2:输入:nums = [2,2,2,2,2], target = 8
输出:[[2,2,2,2]]提示:
1 <= nums.length <= 200
-109 <= nums[i] <= 109
-109 <= target <= 109来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/4sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
func fourSum(nums []int, target int) [][]int {sort.Ints(nums)// fmt.Println(nums)n := len(nums)res := [][]int{}for i := 0; i < n-3; i++ {/*** 因为target可以是负数,所以不能这么剪枝* 例如 [-5,-4,-3,-2,1,5,4,2] target = -14*/// if nums[i] > target {// break// }// 去重 [a,a,x,y]if i > 0 && nums[i] == nums[i-1] {continue}for j := i + 1; j < n-2; j++ {in, jn := nums[i], nums[j]twoSum := in + jnif j > i+1 && nums[j] == nums[j-1] {continue}l, r := j+1, n-1for l < r {ln, rn := nums[l], nums[r]temp := twoSum + ln + rnif temp == target {res = append(res, []int{in, jn, ln, rn})// 去重for l < r && nums[l] == ln {l++}for l < r && nums[r] == rn {r--}} else if temp < target {for l < r && nums[l] == ln {l++}} else {for l < r && nums[r] == rn {r--}}}}}return res
}
:::
相关文章:
[leetcode 双指针]
1. 三数之和 M :::details 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例…...
Notepad++批量添加引号
工作中经常会遇到这样情景:业务给到一批订单号,需要查询这批订单的某些字段信息。在where条件中需要传入这些订单号的数组,并且订单号用引号引起,用引号隔开。 字符串之间长度相同 可以按住CtrlAlt和鼠标左键选中区域࿰…...
HarmonyOS4.0从零开始的开发教程04 初识ArkTS开发语言(下)
HarmonyOS(二) 初识ArkTS开发语言(下)之TypeScript入门 声明式UI基本概念 应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程ÿ…...
Failed to connect to github.com port 443 after 21055 ms: Timed out
目前自己使用了梯*子还是会报这样的错误,连接不到的github。 查了一下原因: 是因为这个请求没有走代理。 解决方案: 设置 -> 网络和Internet -> 代理 -> 编辑 记住这个IP和端口 使用以下命令: git config --global h…...
Python小技巧:冻结参数,让你的代码变简洁
Python 有一些非常使用的模块, functools 就是其中之一。今天我们来说说其中的 partial 函数, partial 函数看起来平平无奇,如果你经常翻看高手们写的库,会发现很多地方都在使用这函数。 入门 我们从一个小场景开始。 现在我们需…...
如何判断电脑电源质量的好坏?
电脑电源作为电脑的关键部件直接影响到电脑的性能和寿命,因此选择一个好的电源至关重要。那么要如何判断电脑电源的好坏呢?判断的指标都有哪些呢? 1.外观检测 观察电源外观可以初步判断电脑电源的工艺质量和材料质量。外观检测需要检查电源外壳是否坚固࿰…...
装饰器基础知识
一、概述 装饰器是可调用的对象,其参数是另一个函数(被装饰的函数)。装饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个函数或可调用对象。 装饰器的一大特性是,能把被装饰的函数替换成其他…...
轻量封装WebGPU渲染系统示例<42>- vsm阴影实现过程(源码)
前向实时渲染vsm阴影实现的主要步骤: 1. 编码深度数据,存到一个rtt中。 2. 纵向和横向执行遮挡信息blur filter sampling, 存到对应的rtt中。 3. 将上一步的结果(rtt)应用到可接收阴影的材质中。 具体代码情况文章最后附上的实现源码。 当前示例源码github地址: …...
[Electron] 将应用日志文件输出
日志文件输出可以使用 electron-log 模块。 electron-log 是一个用于 Electron 应用程序的日志记录库。它提供了一种简单且方便的方式来在 Electron 应用中记录日志信息,并支持将日志输出到文件、控制台和其他自定义目标。 以下是 electron-log 的一些主要特点…...
特性【C#】
C#特性是一种用于在编译时向程序元素添加声明性信息的语言结构。 下面是C#特性的使用方法: 1.使用系统提供的特性: 可以使用系统提供的特性来标记类、方法、属性等,以便在编译时进行验证或者提供其他信息。例如,可以使用Obsole…...
理解SpringIOC和DI第一课(Spring的特点),IOC对应五大注解,ApplicationContext vs BeanFactory
Spring是一个包含众多工具等Ioc容器 对象这个词在Spring范围内,称为bean Spring两大核心思想 1.IOC (IOC是控制反转,意思是控制权反转-控制权(正常是谁用这个对象,谁去创建,)-控制对象的控制权…...
【微服务】分布式限流如何实现
Sentinel 是一款阿里巴巴开源的分布式系统级流量控制组件,它提供了流量的自适应控制、熔断降级、系统负载保护等功能。下面是使用 Sentinel 实现分布式限流方案的基本步骤: 引入 Sentinel 依赖:首先在你的 Java 项目中引入 Sentinel 的相关依…...
【S32K3环境搭建】-0.3-S32DS安装实时驱动RTD(Real-Time Driver)
目录 1 什么是“实时驱动RTD(Real-Time Driver)” 2 安装“实时驱动RTD(Real-Time Driver)” 2.1 方法一:通过S32DS Extensions and Updates安装“实时驱动RTD(Real-Time Driver)” 2.2 方法二:通过Install New Software…安装“实时驱动RTD(Real-Ti…...
软件设计之适配器模式
类模式 我们知道插座的电压为交流电220V,而日常电器使用的是直流电且电压会较小,比如手机充电会通过插头适配器达到额定的输入电流。下面我们实现这个案例:将220V电压转化为5V的电压。 package Adapter.Class;public class Adapter extends …...
虚拟化逻辑架构:OVS 交换机与端口管理
目录 一、实验 1.OVS 交换机管理 2.OVS端口管理 二、问题 1.KVM下的br0和virbr0有何区别 2.OVS 虚拟交换机 与接口如何实现关联的创建和删除 3.两个ovs之间如何进行流量交互 4.虚拟网络如何和物理网络互联 一、实验 1.OVS 交换机管理 (1)查看网…...
【springboot】idea项目启动端口被占用
问题 idea本地启动springboot项目端口老是被占用 解决 关闭被占用的端口进程 步骤: 1. winR打开程序框 2. 查出被占用端口的进程id netstat -ano | finderstr 端口号 例如 netstat -ano | finderstr 81013.杀死进程 taskkill /pid 进程id -t -f 例如 taskkill /pid 2…...
linux环境下编译安装OpenCV For Java(CentOS 7)
最近在业余时间学习了一些有关图像处理的代码,但是只能本地处理,满足不了将来开放远程服务的需求。 因此,查找并参考了一些资料,成功在centos7环境安装上了opencv 460。 下面上具体安装步骤,希望能帮到有需要的同学。 …...
健康学习到 150 岁:人体系统调优不完全指南 | 开源日报 No.93
jesseduffield/lazygit Stars: 40.0k License: MIT lazygit,一个用 Go 语言编写的简单终端UI工具,可以执行 Git 命令。 该项目旨在让使用者更加方便地使用 Git,并提供了以下功能: 可视化操作:用户可以通过图形界面进…...
C++ Easyx 三子棋
目录 思路 框架编辑 读取操作 数据操作 绘制画面 游戏的数据结构 用二维数组来模拟棋盘格 赢的情况 平局情况 Code 代码细节部分 (1)初始化棋盘格 (2) 初始化棋子类型编辑 事件处理部分 落子 框架内代码的完善 数据处…...
[NAND Flash 2.1] NAND Flash 闪存改变了现代生活
依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 1989年NAND闪存面世了,它曾经且正在改变了我们的日常生活。 NAND 闪存发明之所以伟大,是因为,…...
FastAPI分块上传存储:对象存储集成完整指南
FastAPI分块上传存储:对象存储集成完整指南 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi 想要在FastAPI应用中实现大文件…...
OpenClaw智能邮件处理:Qwen3-32B镜像自动分类与优先级标记
OpenClaw智能邮件处理:Qwen3-32B镜像自动分类与优先级标记 1. 为什么需要自动化邮件处理 每天打开邮箱看到堆积如山的未读邮件,这种焦虑感我深有体会。作为技术团队的负责人,我的邮箱常年保持200未读状态——直到上个月用OpenClawQwen3-32B…...
Mac Mouse Fix革命性指南:让普通鼠标在Mac上实现专业级操作体验
Mac Mouse Fix革命性指南:让普通鼠标在Mac上实现专业级操作体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix是一款专为Mac用户…...
分块技术全解析:长上下文没有杀死它,反而让它成了 RAG 的核心命门
随着 GPT-4o、Claude 3.7 等大模型将上下文窗口推至百万 Token 级别,行业里出现了一种极具误导性的声音:“长上下文已经让文本分块(Chunking)技术彻底过时了”。但现实恰恰相反,长上下文不仅没有淘汰分块,反…...
3分钟掌握Magika:AI驱动的文件类型检测终极指南
3分钟掌握Magika:AI驱动的文件类型检测终极指南 【免费下载链接】magika 项目地址: https://gitcode.com/GitHub_Trending/ma/magika Magika是一款基于深度学习的智能文件类型检测工具,由Google开源,能够快速准确地识别各种文件的内容…...
LM2596 DC-DC开关电源芯片的实战应用与优化设计
1. LM2596芯片基础与工作原理 LM2596这颗DC-DC降压芯片可以说是电子工程师的老朋友了,从工业设备到消费电子产品都能见到它的身影。我第一次用它是在大学做智能车项目时,需要把12V电池电压降到5V给单片机供电。当时对比了几款芯片后选择了LM2596…...
3步解锁全显卡AI超分:让老旧设备焕发新生的开源黑科技
3步解锁全显卡AI超分:让老旧设备焕发新生的开源黑科技 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler AI超分辨率技术正…...
Python实战:出租车计费模拟器开发(附完整代码与测试用例)
Python实战:出租车计费模拟器开发(附完整代码与测试用例) 出租车计费系统是城市交通中不可或缺的一部分,而用Python模拟这一过程不仅能帮助初学者理解条件分支和输入输出处理,还能培养将现实问题转化为代码的思维能力。…...
AI Agent操作系统架构师:Harness Engineer解析
Harness Engineer:AI Agent时代的「系统架构师」,打造可执行可信赖的智能体操作系统引言 当大语言模型从「对话助手」进化为「能干活的AI Agent」,我们发现一个核心矛盾:模型的概率性灵活能力与业务的确定性执行要求始终无法调和。…...
24小时运行不中断:OpenClaw+GLM-4.7-Flash构建个人资讯聚合器
24小时运行不中断:OpenClawGLM-4.7-Flash构建个人资讯聚合器 1. 为什么需要个人资讯聚合器 每天早上打开手机,总会被各种新闻推送淹没。财经、科技、行业动态...信息过载已经成为现代人的通病。作为一个技术从业者,我发现自己花费在筛选有效…...
