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

LeetCode 15. 三数之和

三数之和

题目链接 15. 三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != 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 。

题目解释

在数组中找到三个元素,然后让他们的和为0,注意的是我们结果不要重复.

算法原理

这个很简单,我们先排序.然后固定一个元素val,在这个前面寻找两个元素,求他们的和为-val.这不就退化成我们的两个元素之和了吗.这里我们需要解决两个问题

  • 为何当val为最大值的时候,我们在前面选两个数一定是所有情况,这是对于每一个结果而言,我们的三个元素中一定存在一个值比较大(都为0的也是符合下面的), 我们将数组中的每一个元素都作为一个最大值,让后遍历整个数组,就可以收取所有情况
  • 如何解决重复问题,这里提供两个方法,一个是都保存下来,等到最后处理,麻烦.第二个是在收集结果的时候就处理了

细节补充

补充下细节,我们如何处理.

  • 固定下最大值val, 收集结果之后跳过重复的val
  • 对于收集的一次结果,跳过重复的num[left]和num[right]

代码编写

class Solution
{
public:vector<vector<int>> threeSum(vector<int> &nums){vector<vector<int>> reuslt;sort(nums.begin(), nums.end());for (int i = nums.size() - 1; i >= 2;){int val = nums[i];int left = 0;int right = i - 1;while (left < right){int sum = nums[left] + nums[right];if (sum + val == 0){// 收集reuslt.push_back({nums[left], nums[right], val});// 跟新left++;right--;while (left < right && nums[left] == nums[left - 1])left++;while (left < right && nums[right] == nums[right + 1])right--;}else if (sum > -val){right--;}else{left++;}}while (i >= 2 && nums[i] == val){i--;}}return reuslt;}
};

相关文章:

LeetCode 15. 三数之和

三数之和 题目链接 15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 **注意&#xff1a;**答案…...

React-native-camera 在小米手机上拍照查看闪退

场景&#xff1a;为实现可拍照和录像的相机用react-native-camera这个库手写一个相机&#xff0c;发现了拍出来的图片在小米10上查看闪退 根据手机后台捕获的错误信息是什么玩意太大了&#xff08;之前还以为是图片显示组件的问题&#xff09; 改进&#xff1a;相机吊起的时候…...

nodejs+vue大学生社团管理系统

通过软件的需求分析已经获得了系统的基本功能需求&#xff0c;根据需求&#xff0c;将大学生社团管理系统平台功能模块主要分为管理员模块。管理员添加社团成员管理、社团信息管理&#xff0c;社长管理、用户注册管理等操作。 目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1…...

异步编程详解(.NET)

在之前写的一篇关于async和await的前世今生的文章之后&#xff0c;大家似乎在async和await提高网站处理能力方面还有一些疑问&#xff0c;很多网站本身也做了不少的尝试。今天我们再来回答一下这个问题&#xff0c;同时我会做一个async和await在WinForm中的尝试&#xff0c;并且…...

excel怎么固定前几行前几列不滚动?

在Excel中&#xff0c;如果你想固定前几行或前几列不滚动&#xff0c;可以通过以下几种方法来实现。详细的介绍如下&#xff1a; **固定前几行不滚动&#xff1a;** 1. 选择需要固定的行数。例如&#xff0c;如果你想要固定前3行&#xff0c;应该选中第4行的单元格。 2. 在E…...

elasticsearch完整学习

文章目录 elasticsearch一、概念二、ELK集群部署三、图形化界面 elasticsearch 一、概念 1、ELKStack简介&#xff08;都是java架构&#xff0c;需要jdk底层&#xff09; 什么是ELK&#xff1f;通俗来讲&#xff0c;ELK是由Elasticsearch、Logstash、Kibana 三个开源软件组成的…...

vscode Coder Runner 运行C++

1. 设置Code Runner 2. 防止输入读不到&#xff0c;把在终端运行勾上。 3. 设置minw/bin的环境变量 安装mingw教程&#xff1a;https://blog.csdn.net/fancy_male/article/details/133992000 4. 见图...

牛客网刷题-(2)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

FreeRTOS基础(如何学好FreeRTOS?)

目录 基础知识 进阶内容 后期“摆烂” 基础知识 实时操作系统 (RTOS)&#xff1a;FreeRTOS是一个实时操作系统&#xff0c;它提供了任务管理、调度和同步等功能&#xff0c;在嵌入式系统中有效地管理多个任务。 任务&#xff08;Task&#xff09;&#xff1a;任务是在RTOS…...

读书笔记:Effective C++ 2.0 版,条款43(多继承)、条款44(概念明确)、条款45-50(杂项)

条款43: 明智地使用多继承 并没有禁止&#xff0c;从概念上讲&#xff0c;多继承可能更符合真实世界。 条款44: 说你想说的&#xff1b;理解你所说的 概念明确 条款45: 弄清C在幕后为你所写、所调用的函数 隐性成本&#xff0c;看下编译后的c、asm源码。 条款46: 宁可编译和…...

最新Jn建站系统2.0 已集成各类源码 【附视频安装教程】

附视频安装教程|已集成各类源码 目前已集成的网站&#xff1a; 1.发卡网(最新) 2.代刷网(无需授权) 3. 博客网(自带模板) 4.易支付(稳定版) 5.个人导航网(简洁) 6.代理查询网 7.留言网 8.匿名网 9.表白墙(最新) 10.抽奖网 11.源码站 12.z-blog博客程序 13.织梦CM…...

JAVA多线程基础篇--守护线程(Daemon Thread)

1.概述 JAVA中的线程主要分为两类&#xff1a;用户线程&#xff08;User Thread&#xff09;和守护线程(Daemon Thread)。JAVA语言中无论是线程还是线程池&#xff0c;默认都是用户线程&#xff0c;因此用户线程也被称为普通线程。守护线程也被称之为后台线程、服务线程或精灵…...

对知识蒸馏的一些理解

知识蒸馏是一种模型压缩技术&#xff0c;它通过从一个大模型&#xff08;教师模型&#xff09;中传输知识到一个小模型&#xff08;学生模型&#xff09;中来提高学生模型的性能&#xff0c;知识蒸馏也要用到真实的数据集标签。 软损失soft loss就是拿教师模型在蒸馏温度为T的…...

概率论_概率公式中的分号(;)、逗号(,)、竖线(|) 及其优先级

目录 1.概率公式中的分号(;)、逗号(,)、竖线(|) 2.各种概率相关的基本概念 2.1 联合概率 2.2 条件概率&#xff08;定义&#xff09; 2.3 全概率(乘法公式的加强版) 2.4 贝叶斯公式 贝叶斯定理的公式推导 1.概率公式中的分号(;)、逗号(,)、竖线(|) ; 分号代表前后是两类…...

【C++】二叉树进阶 -- 详解

一、二叉搜索树概念 二叉搜索树 又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点…...

K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路

K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 Node节点资源不足可能会产生的故障 故障一&#xff1a;Pod数量太多超出物理节点的限制每一台Node节点中默认限制最多运行110个Pod资源&#xff0c;当一个应用程序有成百上千的Pod资源时&#xff0c;如果不扩容Node节…...

Node.js与npm版本比对

Node.js与npm版本比对 Node.js与npm版本比对版本对比表Node版本对比 Node.js与npm版本比对 我们在项目开发过程中&#xff0c;经常会遇到公司一些老的前端工程项目&#xff0c;而我们当前的node及npm版本都是相对比较新的了。 在运行以前工程时&#xff0c;会遇到相关环境不匹…...

智加科技与东风柳汽达成深度合作 自动驾驶重卡计划2024年初量产交付

&#xff08;2023年10月19日&#xff0c;苏州&#xff09;全球领先的重卡自动驾驶技术公司智加科技与东风柳汽宣布&#xff0c;双方共同开发的自动驾驶重卡H7计划2024年初实现量产交付。未来&#xff0c;双方将携手推出安全可靠、高性价比、性能卓越的自动驾驶重卡产品&#xf…...

mac下配置环境-node以及nvm

当前配置环境主要针对于mac下系统&#xff0c;需要提前安装brew包 如需要配置&#xff0c;可查阅&#xff1a;Brew包的基本安装&#xff08;手把手教学&#xff09;-CSDN博客 如果是window环境配置&#xff0c;分享一个不错的帖子&#xff1a;nvm的安装和使用&#xff08;详细&…...

Elasticsearch基础篇(六):es创建映射和设置

es创建映射和设置 一、什么是 Elasticsearch 映射&#xff1f;二、映射中的字段类型常见字段类型 &#xff08;Common data types&#xff09;对象和关联类型&#xff08;Objects and relational types&#xff09;结构化数据类型&#xff08;Structured data types&#xff09…...

Playwright MCP:重新定义浏览器自动化边界的智能会话桥接方案

Playwright MCP&#xff1a;重新定义浏览器自动化边界的智能会话桥接方案 【免费下载链接】playwright-mcp Playwright MCP server 项目地址: https://gitcode.com/gh_mirrors/pl/playwright-mcp 在当今Web自动化测试领域&#xff0c;开发者们面临着一个普遍困境&#x…...

【Zotero】Zotero翻译插件时好时坏?一文讲透原因与解决方案

学术人的痛&#xff1a;今天的翻译&#xff0c;明天的“请求错误” 作为一名重度文献阅读者&#xff0c;我每天与Zotero相伴的时间比跟室友说话还多。它的PDF Translate插件堪称学术神器——划词即译&#xff0c;让外语文献阅读效率翻倍。 但有一个问题一直困扰着我&#xff…...

智慧树自动刷课终极指南:Autovisor让你的网课学习效率翻倍!

智慧树自动刷课终极指南&#xff1a;Autovisor让你的网课学习效率翻倍&#xff01; 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor 还在为智慧树网课的繁琐操作…...

网盘直链下载助手完整教程:如何轻松获取八大网盘真实下载地址

网盘直链下载助手完整教程&#xff1a;如何轻松获取八大网盘真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘…...

Spring Boot 4.0正式版GA后72小时内,头部云厂商紧急下架3款旧Agent插件——你的生产集群是否仍在使用已被标记为EOL的Instrumentation库?

第一章&#xff1a;Spring Boot 4.0 Agent-Ready 架构演进与EOL危机全景Spring Boot 4.0 并非官方已发布版本&#xff0c;而是社区与企业级监控、可观测性厂商围绕 Java Agent 深度集成所推动的架构预演范式。其核心驱动力源于 Spring Boot 3.x 的 Jakarta EE 9 迁移完成、Graa…...

如何在5分钟内为Unity游戏实现实时翻译:XUnity.AutoTranslator完整实战指南

如何在5分钟内为Unity游戏实现实时翻译&#xff1a;XUnity.AutoTranslator完整实战指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款功能强大的Unity游戏实时翻译插件&…...

图解目标检测算法之CenterNet

&#x1f31e;欢迎来到图解深度学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f339;2026年3月20日&#x1f339; ✉️希望可以和大家一起完成…...

GTE-Base-ZH镜像体验:可视化界面+API,双模式交互更便捷

GTE-Base-ZH镜像体验&#xff1a;可视化界面API&#xff0c;双模式交互更便捷 1. 模型与镜像介绍 1.1 GTE模型背景 GTE&#xff08;General Text Embedding&#xff09;模型是由阿里巴巴达摩院研发的文本嵌入模型系列&#xff0c;基于BERT框架构建。该系列模型在大规模中文和…...

PPT讲解视频怎么做?3种常见方案对比

在做课程、培训或者知识分享时&#xff0c;很多人都会遇到一个问题&#xff1a;&#x1f449; 如何把PPT变成一个讲解视频&#xff1f;目前主流方案大致可以分为3类&#xff0c;每种方式我都实际体验过&#xff0c;下面给你一个真实对比总结。一、方案一&#xff1a;手动录屏&a…...

OpenClaw压力测试:百川2-13B-4bits连续处理1000个文件的稳定性

OpenClaw压力测试&#xff1a;百川2-13B-4bits连续处理1000个文件的稳定性 1. 测试背景与目标 去年冬天的一个深夜&#xff0c;我正被堆积如山的PDF合同审核工作折磨得焦头烂额。当时突发奇想&#xff1a;如果用AI自动处理这些文件会怎样&#xff1f;这个念头直接促成了本次压…...