Leecode热题100---15:三数之和为零

题目:
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。
请你返回所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。

C++:
双指针法:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {int n = nums.size();sort(nums.begin(), nums.end()); // 对数组进行排序,以便后续操作vector<vector<int>> answer; // 存储结果的二维向量for (int i = 0; i < n; i++) { // 遍历数组,固定第一个元素// 避免重复的固定元素if (i > 0 && nums[i] == nums[i - 1])continue;int left = i + 1; // 左指针指向固定元素的下一位int right = n - 1; // 右指针指向数组末尾while (left < right) {int sum = nums[i] + nums[left] + nums[right]; // 计算三个元素的和if (sum < 0) { // 如果和小于零,说明需要增大和,左指针右移一位left++;}else if (sum > 0) { // 如果和大于零,说明需要减小和,右指针左移一位right--;}else { // 和等于零,找到满足条件的三元组answer.push_back(vector<int>{ nums[i], nums[left], nums[right] }); // 将三元组添加到结果中cout << nums[i], nums[left], nums[right];// 避免重复的左指针元素while (left < right && nums[left] == nums[left + 1])left++;// 避免重复的右指针元素while (left < right && nums[right] == nums[right - 1])right--;left++; // 左指针右移一位right--; // 右指针左移一位}}}return answer;}
};int main()
{Solution S;vector<int> nums = { -1, 0, 1, 2, -1, -4 };vector<vector<int>> answers = S.threeSum(nums);
}

python:
思路:先排序,然后两边向中间靠拢。

class Solution():def threeSum(self,nums):nums.sort()  # 排序res = []for i in range(len(nums)):  # 遍历每一个数if i==0 or nums[i] > nums[i-1]:  # 确定不重复的数字(开头)l = i+1r = len(nums)-1while l<r:s = nums[i] + nums[l] + nums[r]if s == 0:res.append([nums[i],nums[l],nums[r]])l += 1r -= 1# 左边向右移动到不重复数为止while l<r and nums[l] == nums[l-1] :l += 1# 右边向左边移动不重复数为止while l<r and nums[r] == nums[r+1] :r -= 1elif s >0:r -= 1else:l += 1return res

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

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

相关文章

OpenAI 今日(北京时间 5 月 14 日凌晨两点)将发布的大更新,不是 GPT-5,也不是搜索引擎

&#x1f989; AI新闻 &#x1f680; OpenAI 今日&#xff08;5月13日&#xff09;将发布的大更新&#xff0c;不是 GPT-5&#xff0c;也不是搜索引擎 摘要&#xff1a;OpenAI 预计即将推出一款新的 AI 语音助手&#xff0c;该助手不仅可以进行语音和文字交流&#xff0c;还能…

Hashmap详细解析,原理及使用方法分析

hashmap基本原理 根据的hashCode值存储数据。由数组链表组成的&#xff0c;Entnr数组是HashMap的主体&#xff0c;数组中每个元素是一个单向链表。链表则是1/1解哈希冲突而存在的。在lava8中&#xff0c;使用红黑树优化。当链表长度大于8并且元素个数大于64&#xff0c;转为红…

常见加解密算法02 - RC4算法分析

RC4是一种广泛使用的流密码&#xff0c;它以其简洁和速度而闻名。区别于块密码&#xff0c;流密码特点在于按位或按字节来进行加密。 RC4由Ron Rivest在1987年设计&#xff0c;尽管它的命名看起来是第四版&#xff0c;实际上它是第一个对外发布的版本。 RC4算法的实施过程简洁…

centos7.8 迁移为 TencentOS Server 2.4(TK4) 报错解决

文章目录 一 问题二 解决三 注意 一 问题 CentOS 官方计划停止维护 CentOS Linux 项目&#xff0c;公司某台腾讯云的centos7.8服务器计划迁移为 TencentOS Server 2.4(TK4) 。在下载rpm包执行迁移命令后报错&#xff0c;场景还原如下。 首先 安装 Python 3 yum install -y p…

什么?免费使用GPT-4o?

⭐简单说两句⭐ ✨ 正在努力的小叮当~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &a…

[Algorithm][多源BFS][矩阵][飞地的数量][地图中的最高点][地图分析] + 多源BFS原理讲解 详细讲解

目录 0.原理讲解1.矩阵1.题目链接2.算法原理详解3.代码实现 2.飞地的数量1.题目链接2.算法原理详解3.代码实现 3.地图中的最高点1.题目链接2.算法原理详解3.代码实现 4.地图分析1.题目链接2.算法原理详解3.代码实现 0.原理讲解 注意&#xff1a;只要是用**BFS解决的最短路径问题…

Apache SeaTunnel在世界级银行巨头JP Morgan 内部的应用实践

作者系 JP Morgan 大数据工程师&#xff0c;文章内容来源于[DET 网络研讨会] 与 Apache SeaTunnel 的数据集成&#xff1a;https://www.youtube.com/watch?vln4mn6vLenc&#xff08;有兴趣的同学可以观看演讲&#xff09; 文章介绍了他任职期间使用 Apache SeaTunnel 优化数据…

基础模型的工具学习:综述

23年6月清华、人大、UIUC、纽约大学、北邮和CMU等的论文“Tool Learning with Foundation Models”。 人类拥有创造和利用工具的非凡能力&#xff0c;使他们能够克服物理限制并探索新领域。随着最近强大的基础模型的出现&#xff0c;人工智能系统有可能像人类一样熟练地使用工…

[C/C++] -- 海量数据查重

例如&#xff1a;50亿int整型数&#xff0c;以及一台可用内存为400M的机器&#xff0c;时间复杂度要求O(n)&#xff0c;统计只出现一次的数。 需要一种能够在满足 O(n) 时间复杂度要求的同时&#xff0c;使用尽可能少的内存来解决问题。 在处理海量数据时&#xff0c;分治思想…

【Keil备忘录】Keil MDK Warning: L6989W 数学计算函数警告问题

文章目录 1. 发生的场景2. 警告内容3.警告含义4.警告屏蔽解决尝试5. 警告消除解决尝试 1. 发生的场景 stm32L4系列使用数学库时遇到 2. 警告内容 Warning: L6989W: Could not apply patch sdcomp-29491-629360 to instruction VPOP {d8-d13} at offset 0x54, instructio…

浏览器curl请求快速转换为python request 请求

Python 中的 requests 库将浏览器复制的 cURL 命令转换为请求对象。下面是一个示例&#xff1a; import requestscurl_command """curl -X GET \http://example.com/api/data \-H Content-Type: application/json \-H Cookie: udide9ceb2bb9a6bebb401fcddf5c9…

实践指南:如何将 SpringBoot 项目无缝部署到 Tomcat 服务器

序言 SpringBoot 是一个用来简化 Spring 应用初始搭建以及开发过程的框架&#xff0c;我们可以通过内置的 Tomcat 容器来轻松地运行我们的应用。但在生产环境中&#xff0c;我们可能需要将应用部署到独立的 Tomcat 服务器上。本文给大家介绍 SpringBoot 项目部署到独立 Tomcat…

2024速通python之python进阶

文章目录 一、数据容器1.list列表&#xff08;1&#xff09;定义&#xff08;2&#xff09;常用方法 2.元组&#xff08;1&#xff09;定义 3.字符串常用操作汇总&#xff08;1&#xff09;根据下标索引取出特定位置字符&#xff08;2&#xff09;查找给定字符的第一个匹配项的…

三:哈希map day6 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

今日任务 ● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和 今日任务 242.有效的字母异位词 题目 大型概括&#xff1a;map 的使用 1.题目描述-->思路&#xff1a; 给出两个string s,t; …

Android Update Engine 分析(二十九)如何进行连续多个版本的升级?

本文为洛奇看世界(guyongqiangx)原创,转载请注明出处。 原文链接:https://blog.csdn.net/guyongqiangx/article/details/138849767 0. 背景 关于如何连续进行多个版本升级,这是一个很常见的需求,也是 OTA 讨论群里试不试就会讨论的一个话题。 例如,昨天一个小伙伴在群里…

a-auto-complete 请求后端数据做模糊查询,解决下拉框选择选不上,不回显的问题

a-auto-complete 请求后端数据做模糊查询&#xff0c;解决下拉框选择选不上&#xff0c;不回显的问题 记录一个a-auto-complete卡bug卡了两天&#xff0c;找不到哪里的问题下拉框选择选不上&#xff0c;不回显&#xff0c;最后终于解决了。 我还对下拉框显示的内容做了小调整。…

MYSQL数据库默认的系统库详解

文章目录 [TOC](文章目录) MYSQL数据库默认的系统库详解1、information_schema(数据库)2、mysql3、performance_schema &#xff08;性能库&#xff09;4、sys MYSQL数据库默认的系统库详解 1、information_schema(数据库) 1、记录了用户、表、视图等元数据信息。这个库是虚拟…

越来越真的Deepfake再次引起网安界的关注

当地时间5月6日&#xff0c;全球网络安全领域最受关注的年度盛会 RSAC 2024在美国旧金山隆重开幕。当天&#xff0c;被誉为“安全圈奥斯卡”的创新沙盒大赛也决出了冠军&#xff0c;Reality Defender凭借其创新性的深度伪造&#xff08;Deepfake&#xff09;检测平台摘得桂冠&a…

【漏洞复现】泛微OA E-Cology users.data信息泄露漏洞

漏洞描述&#xff1a; 泛微OA E-Cology是一款面向中大型组织的数字化办公产品&#xff0c;它基于全新的设计理念和管理思想&#xff0c;旨在为中大型组织创建一个全新的高效协同办公环境。泛微OA E-Cology users.data存在敏感信息泄露漏洞&#xff0c;攻击者利用此漏洞可以获取…

Excel 根据包含的关键词将指定列按关键词指定顺序排列

例题描述和简单分析 有 Excel 文件&#xff0c;数据如下所示&#xff1a; AB1Parent ColumnModifier (Column)2Jack lives in the villageRose3As mentioned by jackVillage4Rose already spoke to jack about last nightJack5Rose left the village6rose was their yesterda…