leetcode-15. 三数之和

题目描述

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。

示例 3:

输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。

思路

1)数组从小到大排序

2)第一个指针first从头开始遍历,如果和前一个是一样的数字,就跳过

3)剩下的两个指针的目标就是-nums[first]

4)第2个指针开始从first后一位开始遍历

5)和第一个指针一样,也是遇到和前一个指针一样,就跳过

6)第2个指针和第3个指针的和,如果大于-nums[first],就third-=1

7)遇到了第2个指针和第3个指针的和==-nums[first],就保存起来

class Solution(object):def threeSum(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""nums.sort()ans = []n = len(nums)for first in range(n):if first>0 and nums[first]==nums[first-1]:continuethird = n-1target = -nums[first]for second in range(first+1,n):if second>first+1 and nums[second]==nums[second-1]:continuewhile second<third and nums[second]+nums[third]>target:third-=1if second==third:breakif nums[second]+nums[third] == target:ans.append([nums[first], nums[second], nums[third]])return ans 

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

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

相关文章

有哪些值得买的开放式耳机推荐?2024年开放式运动耳机选购指南

开放式耳机因其独特设计&#xff0c;能在一定程度上保护听力。相较于传统封闭式耳机&#xff0c;开放式设计允许周围环境声音自然流入耳内&#xff0c;降低了耳内共振和声压&#xff0c;减少了耳道的不适感&#xff0c;从而减轻了对听力的潜在损害。对于追求音质与听力保护并重…

iOS git创建与合并分支

参考文章 Git – 创建与合并分支 相关命令行解释 1. 创建并切换到该分支&#xff1a; 2.0.0是新建的分支的名字 git checkout -b 2.0.0 相当于下面这两句 创建分支 git branch 2.0.0 切换到某个分支 git checkout 2.0.0 2. 查看当前所有分支&#xff1a; git branch 如何提…

国外新闻媒体推广:多元化媒体分发投放-大舍传媒

前言 &#xff1a;随着全球化的进程&#xff0c;国外新闻市场呈现出快速发展的趋势。在这个趋势下&#xff0c;国外新闻媒体推广成为了各行业企业宣传业务的重要一环。本文将重点介绍大舍传媒的多元化媒体分发投放服务&#xff0c;以及对国外新闻媒体推广的意义。 1. 多元化媒…

阿赵UE引擎C++编程学习笔记——解决中文乱码问题

大家好&#xff0c;我是阿赵。   在UE编写C的时候&#xff0c;可能有些朋友发现&#xff0c;在C里面如果打印输出或者赋值一些中文的字符串的时候&#xff0c;会出现各种的报错&#xff0c;要么乱码&#xff0c;要么直接编译不过。   这个问题&#xff0c;其实和UE本身没什…

OSEK应用模式

1 前言 应用模式&#xff08;Application modes)用于区分不同的场景&#xff0c;以便在系统运行时&#xff0c;组织各自相互独立的OS相关的资源集合&#xff0c;是一种分而治之的思想体现。不同的应用模式是互斥的&#xff0c;即系统当前必须在一种应用模式&#xff08;且只能在…

Java面试八股之反射慢在哪里

Java反射慢在哪里 动态类型检查&#xff1a; 在反射过程中&#xff0c;Java需要在运行时确定类、方法、字段等的类型信息。这与编译时已经确定类型信息的常规对象访问不同&#xff0c;反射需要额外的类型查询和验证&#xff0c;增加了性能开销。 安全检查&#xff1a; 反射…

重生之我在地球当程序员-SpringMVC篇

重生之我在地球当程序员-SpringMVC篇 本篇主要讲述了SpringMVC框架的使用&#xff0c;以及SpringMVC相关知识点的介绍 SpringMVC 是应用web层的 基于MVC设计模式的轻量级的web框架。 对Servlet封装&#xff0c;支持restful风格 MVC概念和三层架构 MVC Spring MVC中&#xff…

高亚科技签约山东亿海兰特,打造合同及项目一体化管理平台!

近日&#xff0c;中国企业管理软件资深服务商高亚科技与山东亿海兰特通信科技有限公司&#xff08;以下简称“山东亿海兰特”&#xff09;正式签约&#xff0c;依托8Manage PM业务项目管理软件&#xff0c;打造集客户、合同、项目、交付于一体的运营平台&#xff0c;提升企业全…

对文本框做字数限制

效果图 实现步骤 其中绝对布局根据需求自行调整 <!--单文本输入框--> <div class"form-group"><label class"col-sm-2 control-label is-required">面试公司&#xff1a;</label><div class"col-sm-9"><input …

前端崽的java study笔记

文章目录 basic1、sprint boot概述2、sprint boot入门3、yml 配置信息书写和获取 持续更新ing~ basic 1、sprint boot概述 sprint boot特性&#xff1a; 起步依赖&#xff08;maven坐标&#xff09;&#xff1a;解决配置繁琐的问题&#xff0c;只需要引入sprint boot起步依赖的…

对关系型数据库管理系统的介绍

1.数据库的相关介绍 关系型数据库管理系统&#xff1a;&#xff08;英文简称&#xff1a;RDBMS&#xff09; 为我们提供了一种存储数据的特定格式&#xff0c;所谓的数据格式就是表&#xff0c; 在数据库中一张表就称为是一种关系. 在关系型数据库中表由两部分组成&#xf…

大企业总部与分部组网方案

在全球化的经济环境中&#xff0c;大企业往往设有总部和多个地理分散的分部。为了确保信息的快 速流通、资源的优化配置以及管理的高效运作&#xff0c;构建一个稳定、安全且高效的组网方案显 得尤为重要。本文将探讨大企业如何通过技术手段和管理策略&#xff0c;实现总部与分…

Java练习题(一)

1、关于finally,下面哪个描述正确? &#xff08;B&#xff09; A.在catch块之前但在try块之后执行finally块 B.finally块会被执行无论是否抛出异常 C.只有在执行catch块之后才执行finally块 D.都不是 在Java的异常处理机制中&#xff0c;finally块是一个非常重要的部分&#…

学习古琴律学的好东西,帮您从基因里学古琴

《从基因里学懂古琴》是一本关于古琴律学的著作&#xff0c;作者通过基因的角度来解读古琴音乐的奥秘和美妙。古琴作为我国传统文化的瑰宝之一&#xff0c;具有悠久的历史和独特的音乐风格&#xff0c;但其律学原理一直以来都是一个谜。本书从基因的角度探讨了古琴音乐的律学特…

独立游戏《星尘异变》UE5 C++程序开发日志0——游戏介绍

一.游戏简介 《星尘异变》是一款由来自中国传媒大学的6名在校学生制作的一款星际题材模拟经营游戏&#xff0c;在游戏中&#xff0c;玩家需要扮演一个宇宙中的“神”&#xff0c;开采宇宙中分布在“星云”内部的“星尘”&#xff0c;消耗“星尘”来建造“天体”作为生产更多“…

DigitalOcean 的PostgreSQL、MySQL、Redis、Kafka托管数据库,现已支持自定义指标收集功能

近期&#xff0c;我们的几个托管数据库&#xff08;PostgreSQL、MySQL、Redis和Kafka&#xff09;引入了自定义数据指标功能&#xff08;scrapable metrics&#xff09;。这些指标使您更具体、更细致地了解数据库的性能&#xff0c;包括延迟、资源利用率和错误率。然后&#xf…

vuex的基本认知

目录 一、什么是vuex 二、vuex的应用场景 三、vuex的优势 一、什么是vuex Vuex是一个vue的状态管理工具&#xff0c;状态就是数据。 进一步解释&#xff1a;vuex是一个插件&#xff0c;可以帮助我们管理vue通用的数据&#xff08;多组件共享的数据&#xff09; 二、vuex的…

Git 分支命令操作详解

目录 1、分支的特点 2、分支常用操作 3、分支的使用 3.1、查看分支 3.2、创建分支 3.3、修改分支 3.4、切换分支 3.5、合并分支 3.6、产生冲突 3.7、解决冲突 3.8、创建分支和切换分支说明 1、分支的特点 同时并行推进多个功能开发&#xff0c;提高开发效率。各个分…

C# 在Excel中添加筛选器并执行筛选 (日期筛选、文本筛选、数字筛选)

自动筛选器是 Excel 中的一个基本但极其有用的功能&#xff0c;它可以让你根据特定的条件来自动隐藏和显示你的数据。当有大量的数据需要处理时&#xff0c;这个功能可以帮你快速找到你需要的信息&#xff0c;从未更加有效地分析和处理相关数据。 下面将介绍如何使用免费.NET …