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

(leetcode学习)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 。

提示:

  • 3 <= nums.length <= 3000
  • -105 <= nums[i] <= 105

 第一次写的时候没想到先排序,写的确实是构式。

vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(), nums.end());vector<vector<int>> res;unordered_map<int, vector<vector<int>>> sum_2;unordered_map<string, int> res_m;for (int i = 0; i < nums.size(); i++) {for (int j = i + 1; j < nums.size(); j++) {if (sum_2.find(nums[j]) != sum_2.end()){vector<vector<int>> cur_vv = sum_2.find(nums[j])->second;for (int k = 0; k < cur_vv.size(); k++) {vector<int> cur_v = cur_vv[k], cur_res;if (j == cur_v[2] || j == cur_v[3]) continue;cur_res.push_back(nums[j]);cur_res.push_back(cur_v[0]);cur_res.push_back(cur_v[1]);sort(cur_res.begin(), cur_res.end());string cur_str = to_string(cur_res[0]) + to_string(cur_res[1]) + to_string(cur_res[2]);if (res_m.find(cur_str) == res_m.end()) {res.push_back(cur_res);res_m.insert(make_pair(cur_str, 1));}}}else {vector<int> cur_v = { nums[i], nums[j], i, j };int num = -nums[i] - nums[j];if (sum_2.find(num) == sum_2.end() ){vector<vector<int>> cur_vv;cur_vv.push_back(cur_v);sum_2.insert(make_pair(num, cur_vv));}else {sum_2.find(num)->second.push_back(cur_v);}}}}return res;
}

第二次用排序之后,用二重循环加哈希表,感觉是o(n)的复杂度,但是只打败很少的人,水平所限先就这样吧。

相关文章:

(leetcode学习)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;答案中不可以包含重复的三元组。 示例 1&a…...

算法训练 | 图论Part8 | 117. 软件构建、47. 参加科学大会

目录 117. 软件构建 拓扑排序法 47. 参加科学大会 dijkstra法 117. 软件构建 题目链接&#xff1a;117. 软件构建 文章讲解&#xff1a;代码随想录 拓扑排序法 代码一&#xff1a;拓扑排序 #include <iostream> #include <vector> #include <queue> …...

编程从零基础到进阶(更新中)

题目描述 依旧是输入三个整数&#xff0c;要求按照占8个字符的宽度&#xff0c;并且靠左对齐输出 输入格式 一行三个整数&#xff0c;空格分开 输出格式 输出它们按格式输出的效果&#xff0c;占一行 样例输入 123456789 -1 10 样例输出 123456789-1 10 #include "stdio.…...

MySQL运维实战之ProxySQL(9.6)SQL黑名单

作者&#xff1a;俊达 利用mysql_query_rules表中的error_msg字段&#xff0c;可以实现SQL黑名单的功能。如果规则设置了error_msg&#xff0c;当SQL语句匹配这条规则时&#xff0c;proxysql会直接将error_msg的内容返回给客户端。 当遇到一些大查询严重影响数据库性能时&…...

深入了解MySQL中的innodb_lock_wait_timeout

引言 在数据库管理中&#xff0c;确保数据的一致性和完整性是至关重要的。MySQL的InnoDB存储引擎通过行级锁定机制来实现这一点。然而&#xff0c;当多个事务同时操作数据库时&#xff0c;可能会出现锁等待的情况。了解并合理配置innodb_lock_wait_timeout参数&#xff0c;对于…...

102.qt qml-最全Table交互之多列固定、行列拖拽、自定义委托、标题交互使用教程

自定义实现的Table控件&#xff0c;支持跨qt版本&#xff0c;兼容qt5,qt6&#xff01; 截图如下所示: 黑色风格如下所示&#xff1a; 视频演示入口&#xff1a;Qt QML QianWindowV2.5(新增曲线综合示例、QML最全Table交互示例、支持qt5/qt6)_哔哩哔哩_bilibili 1.示例页面入口…...

文章管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;作者管理&#xff0c;文章管理&#xff0c;文章分类管理&#xff0c;论坛&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;文章&#xff0c;论坛&#xff0c;我的 开发系统…...

Ubuntu22.04安装NIVIDIA显卡驱动总结

1.首先在安装驱动时需要判断系统有无GPU以及GPU的型号 可以参考这篇文章&#xff1a; https://blog.51cto.com/u_13171517/8814753#:~:textubuntu%20%E7%B3%BB%E7%BB%9F%20%E6%80%8E%E4%B9%88%E5%88%A4%E6%96%AD%E7%B3%BB%E7%BB%9F%E6%9C%89%E6%B2%A1%E6%9C%89GPU%201%20%E6%…...

Redis的配置优化、数据类型、消息队列

文章目录 一、Redis的配置优化redis主要配置项CONFIG 动态修改配置慢查询持久化RDB模式AOF模式 Redis多实例Redis命令相关 二、Redis数据类型字符串string列表list集合 set有序集合sorted set哈希hash 三、消息队列生产者消费者模式发布者订阅者模式 一、Redis的配置优化 redi…...

数据结构之初始二叉树(2)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 二叉树的前置知识&#xff08;概念、性质、、遍历&#xff09; 通过上篇文章的学习&#xff0c;我们…...

如何预防最新的baxia变种勒索病毒感染您的计算机?

引言 在当今数字化时代&#xff0c;网络安全威胁层出不穷&#xff0c;其中勒索病毒已成为企业和个人面临的重大挑战之一。近期&#xff0c;.baxia勒索病毒以其高隐蔽性和破坏性引起了广泛关注。本文将详细介绍.baxia勒索病毒的特点、传播方式&#xff0c;并给出相应的应对策略…...

git列出提交记录的文件路径

一、如何列出某次提交记录中修改过/新增的文件&#xff1f; 方法1&#xff1a;使用 git diff-tree 命令来查看某个提交记录中修改过/新增的文件。具体来说&#xff0c;你可以使用以下命令&#xff1a; git diff-tree --no-commit-id --name-only -r <commit-hash>命令解…...

微信小程序密码 显示隐藏 真机兼容问题

之前使用type来控制&#xff0c;发现不行&#xff0c;修改为password属性即可 <van-fieldright-icon"{{passwordType password? closed-eye:eye-o}}"model:value"{{ password }}"password"{{passwordType password ? true: false}}"borde…...

C# 中,使用 LINQ 示例 备忘

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串&#xff0c;没有编译时类型检查或 IntelliSense 支持。 此外&#xff0c; … 对于编写查询的开发者来说&#xff0c;LINQ 最明显的“语言集成”部分就是查询表达式。 …...

GaussDB DWS 详解

文章目录 GaussDB DWS 详解一、简介二、DWS的分布式架构架构概述关键组件 三、分布式查询数据查询流程SQL执行的示例 批注&#xff1a;本文引鉴了Forlogen博主的一些内容&#xff0c;并加以补充&#xff0c;以供学习了解。 GaussDB DWS 详解 一、简介 DWS(Data Warehouse Ser…...

【256 Days】我的创作纪念日

目录 &#x1f33c;01 机缘 &#x1f33c;02 收获 &#x1f33c;03 日常 &#x1f33c;04 成就 &#x1f33c;05 憧憬 最近收到官方来信&#xff0c; 突然发现&#xff0c;不知不觉间&#xff0c;距离发布的第一篇博客已过256天&#xff0c;这期间我经历了春秋招、毕业答辩…...

3D云渲染工具对决:Maya与Blender的性能和功能深度比较

3D建模和动画制作已成为数字领域不可或缺的一环&#xff0c;无论是在影视特效的震撼场面&#xff0c;还是在游戏角色的生动表现&#xff0c;3D技术都扮演着至关重要的角色。而在这一领域&#xff0c;Maya和Blender这两款软件&#xff0c;以其强大的功能和广泛的应用&#xff0c…...

spring.factories详解

spring.factories 是 Spring Boot 中一个重要的配置文件&#xff0c;它用于实现自动配置类和框架的扩展机制。这个文件通常位于项目的 resources/META-INF 目录下&#xff0c;并且遵循 Java 的 .properties 文件格式。以下是对 spring.factories 的详细解释&#xff1a; 自动配…...

从Docker Hub 拉取镜像一直失败超时?这些解决方案帮你解决烦恼

设置国内源&#xff1a; 提示&#xff1a;常规方案&#xff08;作用不大&#xff09; 阿里云提供了镜像源&#xff1a;https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登录后你会获得一个专属的地址 使用命令设置国内镜像源&#xff1a;通过vim /etc/docker/d…...

【pbootcms】新环境搭建环境安装时发生错误

【pbootcms】新环境搭建环境安装时发生错误 提示一下内容&#xff1a; 登录请求发生错误&#xff0c;您可按照如下方式排查: 1、试着删除根目录下runtime目录,刷新页面重试 2、检查系统会话文件存储目录是否具有写入权限; 3、检查服务器环境pathinfo及伪静态规则配置; 先按照…...

3步实现AI动作复制:如何用ComfyUI-MimicMotionWrapper让普通人拥有专业舞者动作

3步实现AI动作复制&#xff1a;如何用ComfyUI-MimicMotionWrapper让普通人拥有专业舞者动作 【免费下载链接】ComfyUI-MimicMotionWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-MimicMotionWrapper 你是否想过让照片中的人物动起来&#xff0c;赋予静…...

终极指南:5步掌握.NET Core Mod加载器Reloaded-II的完整使用方法

终极指南&#xff1a;5步掌握.NET Core Mod加载器Reloaded-II的完整使用方法 【免费下载链接】Reloaded-II Universal .NET Core Powered Modding Framework for any Native Game X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 你是否厌倦了手动复…...

Unity图表性能优化:从折线图到饼图的底层实现与避坑指南

1. 为什么Unity里做图表不是“加个UI控件”就完事了&#xff1f; 在Unity项目里&#xff0c;当策划甩来一句“这个数据面板加个折线图展示用户留存率”&#xff0c;或者美术提出“战斗结算页需要动态饼图显示伤害来源分布”&#xff0c;很多开发者第一反应是&#xff1a;去Asse…...

重尾分布采样的SMTM算法:原理与实践

1. 重尾分布采样的挑战与MCMC方法演进 在贝叶斯统计和统计物理领域&#xff0c;我们经常需要从复杂的概率分布中采样。想象一下&#xff0c;你手里有一袋形状各异的糖果&#xff08;代表数据点&#xff09;&#xff0c;但袋子是不透明的&#xff0c;你只能通过摸取来了解糖果的…...

ApnsPHP高级应用:自定义消息与批量推送功能全解析

ApnsPHP高级应用&#xff1a;自定义消息与批量推送功能全解析 【免费下载链接】ApnsPHP ApnsPHP: Apple Push Notification & Feedback Provider 项目地址: https://gitcode.com/gh_mirrors/ap/ApnsPHP ApnsPHP是一款强大的Apple Push Notification & Feedback …...

2025睿抗机器人大赛智能侦查赛道省赛全流程——基础了解

2025睿抗机器人大赛智能侦查赛道省赛全流程——基础了解 智能侦查赛道概述 2025 睿抗机器人大赛智能侦察赛道是 CAIR 工程竞技赛道下的专业国防装备赛项&#xff0c;以无人侦察车为载体、模拟巷战环境开展军事侦察任务&#xff0c;核心培养学生国防意识与科技创新能力且核心硬件…...

树莓派Zero轻量级数字孪生:Unity实现嵌入式机器人3D可视化控制

1. 这不是“玩具演示”&#xff0c;而是嵌入式机器人开发的数字孪生入口你有没有遇到过这样的场景&#xff1a;手头是一台树莓派Zero驱动的四轮差速小车&#xff0c;电机驱动板接好了&#xff0c;编码器信号也引出来了&#xff0c;PID参数调了三天还是抖得像筛糠&#xff1b;或…...

生成式AI初学者本地部署实操指南:从报错诊断到模型运行

1. 这不是又一篇“AI科普文”&#xff0c;而是一份写给真实初学者的实操手记Generative AI: A Beginner’s Viewpoint Part 2——这个标题乍看像课程续集&#xff0c;但如果你正站在ChatGPT第一次弹出对话框的那一刻、刚下载完Stable Diffusion却卡在WebUI启动界面、或对着Jupy…...

VN设备通道乱序问题解析与Vector硬件固定配置实战

1. 问题根源&#xff1a;为什么VN设备的通道会“乱跑”&#xff1f;在汽车电子测试领域&#xff0c;Vector的VN系列设备&#xff08;如VN1640A、VN1610等&#xff09;是进行CAN、LIN、FlexRay等总线通信测试与仿真的核心工具。当我们在一个复杂的台架上部署了多台同型号的VN设备…...

两张图片拼接在一起中间有条白线

运行示例&#xff1a;给父元素设置font-size: 0;给图片设置display: block;都没用。 后面我换了一个图片就正常了。发现是图片本身的问题&#xff0c;单个看没任何问题&#xff0c;拼接后就会出现白线。 好像说是切的位置不是整数像素&#xff0c;出现 0.5 像素偏移就会出现。 …...