算法 三数之和-(双指针)

牛客网: BM54

题目: 数组中所有不重复的满足三数之和等于0的数,非递减形式。

思路: 数组不小于3。不重复非递减,需先排序。使用idx从0开始遍历到n-2, 如果出现num[idx]==num[idx-1]的情况,忽略继续下一个idx;令left = idx+1, right = n-1,双指针迎面而行,如果满足num[left]+num[right]=-num[idx],则获取一个满足条件的解;为避免重复,分别对left、right一边检测一边移动,注意边界条件left+1<right;如果num[left]+num[right]>-num[idx],则right--;否则left++。

代码:

// gopackage mainimport "sort"// import "fmt"/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param num int整型一维数组* @return int整型二维数组*/
func threeSum( num []int ) [][]int {// write code hereif len(num) < 3 {return [][]int{}}sort.Ints(num)res := [][]int{}for idx := 0; idx < len(num) - 2; idx++ {if idx > 0 && num[idx] == num[idx-1] {continue}left := idx + 1right := len(num) - 1target := -num[idx]for left < right {if num[left] + num[right] == target {res = append(res, []int{num[idx], num[left], num[right]})for left + 1 < right && num[left] == num[left+1] {left++}for right - 1 > right && num[right] == num[right-1] {right--}left++right--} else if num[left] + num[right] > target {right--} else {left++}}}return res
}

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

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

相关文章

现代卷积网络实战系列2:PyTorch构建训练函数、LeNet网络

&#x1f308;&#x1f308;&#x1f308;现代卷积网络实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 1、MNIST数据集处理、加载、网络初始化、测试函数 2、训练函数、PyTorch构建LeNet网络 3、PyTorch从零构建AlexNet训练MNIST数据…

ndoe.js、npm相关笔记

1、npm 全局安装 npm config get prefix 获取 npm 全局安装路径如果全局插件不能正常使用&#xff0c;看环境变量是否已经配置。没有配置则把全局安装路径配置到环境变量的path中

npm 命令

目录 初始化 搜索 安装 删除 更新 换源 查看 其他 补充 1.初始化 npm init #初始化一个package.json文件 npm init -y | npm init --yes 2.搜索 npm s jquery | npm search jquery 3.安装 npm install npm -g #更新到最新版本 npm i uniq | npm ins…

MS933NA适用于 1MP/60fps 摄像头、37.5MHz100MHz、10 位/12 位的串化器

MS933NA 是 10 位 /12 位串化器&#xff0c;支持 37.5MHz  100MHz 时钟&#xff0c; MS933NA 广泛应用于车载摄像、医疗设备、管道探测等领域。 主要特点 ◼ 支持输入 37.5MHz 到 100MHz 的图像时钟 ◼ 单个差分对互连 ◼ 可编程数据有效负载 10 位 /12 …

django 实现:闭包表—树状结构

闭包表—树状结构数据的数据库表设计 闭包表模型 闭包表&#xff08;Closure Table&#xff09;是一种通过空间换时间的模型&#xff0c;它是用一个专门的关系表&#xff08;其实这也是我们推荐的归一化方式&#xff09;来记录树上节点之间的层级关系以及距离。 场景 我们 …

什么是关系模型? 关系模型的基本概念

关系模型由IBM公司研究员Edgar Frank Codd于1970年发表的论文中提出&#xff0c;经过多年的发展&#xff0c;已经成为目前最常用、最重要的模型之一。 在关系模型中有一些基本的概念&#xff0c;具体如下。 (1)关系(Relation)。关系一词与数学领域有关&#xff0c;它是集合基…

Xcode14.3.1打包报错Command PhaseScriptExecution failed with a nonzero exit code

真机运行编译正常,一打包就报错 rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/d9889869-120b-11ee-b796-7a03568b17ac/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender2.6.9] Command PhaseScrip…

优化类问题概述

数学建模系列文章&#xff1a; 以下是个人在准备数模国赛时候的一些模型算法和代码整理&#xff0c;有空会不断更新内容&#xff1a; 评价模型&#xff08;一&#xff09;层次分析法&#xff08;AHP&#xff09;,熵权法&#xff0c;TOPSIS分析 及其对应 PYTHON 实现代码和例题…

QRunnable与外界互传对象

1.概述 QRunnable与外界互通讯是有两种方法的 使用多继承。让我们的自定义线程类同时继承于QRunnable和QObject&#xff0c;这样就可以使用信号和槽&#xff0c;但是多线程使用比较麻烦&#xff0c;特别是继承于自定义的类时&#xff0c;容易出现接口混乱&#xff0c;所以在项…

数据通信——应用层(域名系统)

引言 TCP到此就告一段落&#xff0c;这也意味着传输层结束了&#xff0c;紧随其后的就是TCP/IP五层架构的应用层。操作系统、编程语言、用户的可视化界面等等都要通过应用层来体现。应用层和我们息息相关&#xff0c;我们使用电子设备娱乐或办公时&#xff0c;接触到的就是应用…

package.json属性

添加链接描述 一、必须属性 name 定义项目的名称&#xff0c;不能以".“和”_"开头&#xff0c;不能包含大写字母version 定义项目的版本号&#xff0c;格式为&#xff1a;大版本号.次版本号.修订号 二、描述信息 description 项目描述keywords 项目关键词author …

【刷题笔记9.24】LeetCode:二叉树最大深度

LeetCode&#xff1a;二叉树最大深度 1、题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二、思路与算法 如果我们知道了左子树和右子树的最大深度 lll 和 rrr&#xff0c;…

力扣:109. 有序链表转换二叉搜索树(Python3)

题目&#xff1a; 给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 来源&#xff1a;力扣&#xff08;LeetCod…

uni-app使用HBuilder X编辑器本地打包apk步骤说明

1.下载安装Android Studio 下载地址官方地址&#xff1a;Android Studio 下载文件归档 | Android 开发者 | Android Developers 安装Android SDK和Google USB Driver即可&#xff0c;后者主要是为了后期使用USB设置的&#xff0c;如果不需要可以不点。 2.下载uni-app提供…

ICMP差错包

ICMP报文分类 Type Code 描述 查询/差错 0-Echo响应 0 Echo响应报文 查询 3-目的不可达 0 目标网络不可达报文 差错 1 目标主机不可达报文 差错 2 目标协议不可达报文 差错 3 目标端口不可达报文 差错 4 要求分段并设置DF flag标志报文 差错 5 源路由…

Mac磁盘空间满了怎么办?Mac如何清理磁盘空间

你是不是发现你的Mac电脑存储越来越满&#xff0c;甚至操作系统本身就占了100多G的空间&#xff1f;这不仅影响了电脑的性能&#xff0c;而且也让你无法存储更多的重要文件和软件。别担心&#xff0c;今天这篇文章将告诉你如何清除多余的文件&#xff0c;让你的Mac重获新生。 一…

测试工程师通常用哪个单元测试库来测试Java程序?

测试工程师在测试Java程序时通常使用各种不同的单元测试库&#xff0c;具体选择取决于项目的需求和团队的偏好。我们先来看一些常用的Java单元测试库&#xff0c;以及它们的一些特点&#xff1a; 1.JUnit: 描述: JUnit 是Java中最广泛使用的单元测试库之一&#xff0c;它支持J…

gateway之过滤器(Filter)详解

文章目录 什么是过滤器过滤器的种类局部过滤器代码示例全局过滤器代码示例 总结 什么是过滤器 在Spring Cloud中&#xff0c;过滤器&#xff08;Filter&#xff09;是一种关键的组件&#xff0c;用于在微服务架构中处理和转换传入请求以及传出响应。过滤器位于服务网关或代理中…

Android AMS——AMS初始化(五)

Android AMS 也是一个系统服务,这里我们主要看一下 ActivityManagerService 的启动流程。 一、AMS启动流程 ActivityManagerService 既然是系统服务,那么肯定是通过 SystemServer 启动的,所以我们首先看一下 SystemServer 服务中启动 ActivityManagerService 相关代码。 S…

Angular:通过路由切换页面后,ngOnInit()不会被触发的问题

描述&#xff1a; 我在在使用angular 9版本&#xff0c;出现这样一个问题&#xff1a;我通过路由进入页面时候&#xff0c;会执行ngOnInit&#xff0c;切换到其他页面再切回&#xff0c;此时这个页面的ngInit不会主动执行 原因&#xff1a; 在Angular中&#xff0c;当一个组…