介绍

在这里插入图片描述
题源

分析

1.双指针+固定一个数

首先明白一点,我们有三个数,我们想使用双指针,那就必须固定一个数。

2.二分

本题还涉及二分,双指针经常和二分结合使用(二分本质就是双指针,仔细思考这思考这句话),所以我们要在一开始先排序。

3.去重

题目要求答案不可包含重复的三元组,那么就必须考虑去重。
又分两种情况:
1.对固定的数来说,用当前数和前一个数比较,相同直接跳过本次了。
2.对后两个数,只需要考虑当双指针找到了一次对应目标后,把可能重复的数字跳过去。

明确了思路,代码就非常好写了。

cpp代码

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {//一是固定数+双指针,二是二分,三是去重  vector<vector<int>> res;if(nums.size()<3) return res;sort(nums.begin(),nums.end());for(int i=0;i<nums.size();i++){if(nums[i]>0) break;if(i>0&&nums[i]==nums[i-1]) continue;int j=i+1,k=nums.size()-1;while(j<k){if(nums[i]+nums[j]+nums[k]==0) {res.push_back({nums[i],nums[j],nums[k]});while(j<k && nums[j]==nums[j+1]) j++;while(j<k && nums[k]==nums[k-1]) k--;j++;k--;}else if(nums[i]+nums[j]+nums[k]<0){j++;}else{k--;}}}return res;}
};

流程

指针相遇
未相遇
和小
和大
开始
输入数组
数组排序
固定第一个数
双指针查找
找到解?
保存结果
继续查找
固定下一数
判断和大小
左指针右移
右指针左移

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

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

相关文章

exports使用 package.json字段控制如何访问你的 npm 包

目录 想象一下你正在开发一个 npm 包…… 术语 什么是exports领域&#xff1f; exports好处 保护内部文件 多格式包 将子路径映射到dist目录 子路径导出 单一入口点 多个入口点 公开软件包文件的子集 有条件出口 设置使用条件 默认条件 句法 针对 Node.js 和浏…

AngularJS 安装使用教程

一、AngularJS 简介 AngularJS 是 Google 开发的一款前端 JavaScript 框架&#xff0c;采用 MVVM 架构&#xff0c;提供了数据双向绑定、依赖注入、模块化、路由管理等强大功能&#xff0c;适合构建单页面应用&#xff08;SPA&#xff09;。注意&#xff1a;AngularJS&#xf…

基于python和neo4j构建知识图谱医药问答系统

一、pyahocorasick1.安装 pyahocorasick 包&#xff1a; pip install pyahocorasick -i https://pypi.tuna.tsinghua.edu.cn/simple/pip install pyahocorasick &#xff1a;安装名为 pyahocorasick 的第三方库&#x1f449; 这个库是一个 Aho-Corasick 多模匹配算法 的 Python…

片上网络(NoC)拓扑结构比较

1. 拓扑结构拓扑结构延迟吞吐量跳数功耗面积开销可扩展性容错性布线复杂度适合通信模式Mesh&#xff08;网格&#xff09;低&#xff08;O(√N)&#xff09;高&#xff08;多路径并行&#xff09;O(√N)中高&#xff08;路由器多&#xff09;中高&#xff08;规则布线&#xff…

git merge 命令有什么作用?具体如何使用?

回答重点git merge 命令主要用于将两个分支的历史和内容合并在一起。简而言之&#xff0c;它会将一个分支的更改引入到当前分支中。常见的使用场景是将功能分支&#xff08;feature branch&#xff09;的修改合并回主分支&#xff08;main branch&#xff09;或者开发分支&…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - jieba库分词简介及使用

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解 jieba库分词简介及使用 视频在线地址&…

大模型的后训练与逻辑能力

《DeepSeek原生应用与智能体开发实践》【摘要 书评 试读】- 京东图书 在人工智能与机器学习领域&#xff0c;模型的后训练阶段不仅是技术流程中的关键环节&#xff0c;更是提升模型性能&#xff0c;尤其是数学逻辑能力的“黄金时期”。这一阶段&#xff0c;通过对已初步训练好…

pycharm安装教程-PyCharm2025安装步骤【MAC版】附带安装包

pycharm安装教程-PyCharm2025安装详细步骤【MAC版】安装安装包获取&#xff08;文章末尾&#xff09;今天来给大家分享 Mac 系统安装 PyCharm&#xff0c;附带安装包资源安装&#xff0c; PyCharm 相关就不叙述了&#xff0c;直接开始安装&#xff01; 安装 2024版本、2025年…

【React Native】路由跳转

Link 跳转的路径&#xff0c;就在href里写/details。路径都是相对于app目录来写的&#xff0c;也就是说app目录就是/。很多时候&#xff0c;需要跳转的组件比较复杂。比方说&#xff0c;要在里面要嵌套按钮&#xff0c;或者其他东西。这种情况下&#xff0c;就可以在Link组件里…

使用 Spring Boot + AbstractRoutingDataSource 实现动态切换数据源

1. 动态切换数据源的原理AbstractRoutingDataSource 是 Spring 提供的一个抽象类&#xff0c;它通过实现 determineCurrentLookupKey 方法&#xff0c;根据上下文信息决定当前使用的数据源。核心流程如下&#xff1a;定义多数据源配置&#xff1a;注册多个数据源。实现动态数据…

Kubernetes (K8S)知识详解

Kubernetes (K8S) 是什么&#xff1f; Kubernetes 是 Google 在 2014 年开源的生产级别的容器编排技术&#xff08;编排也可以简单理解为调度、管理&#xff09;&#xff0c;用于容器化应用的自动化部署、扩展和管理。它的前身是 Google 内部的 Borg 项目&#xff0c;Borg 是 …

在github上传python项目,然后在另外一台电脑下载下来后如何保障成功运行

如何在 GitHub 上传并在另一台电脑成功运行 Python 项目✅ 一、上传前&#xff08;本地准备&#xff09; 在你的项目文件夹中进行以下准备&#xff1a; 1. 确保结构清晰 my_project/ ├── main.py ├── utils.py ├── config.yaml ├── requirements.txt └── README…

详解Mysql Order by排序底层原理

MySQL 的 ORDER BY 子句实现排序是一个涉及查询优化、内存管理和磁盘 I/O 的复杂过程。其核心目标是高效地将结果集按照指定列和顺序排列。一、确定排序模式 (Sort Mode)MySQL 根据查询特性和系统变量决定采用哪种排序策略&#xff1a;1.1 Rowid 排序<sort_key, rowid> 模…

SpringBoot的介绍和项目搭建

SpringBoot是简化Spring应用开发的一个框架&#xff0c;他是Spring技术栈的整合。优点&#xff1a;能够快速创建独立运行的Spring项目以及与主流框架集成使用嵌入式的Servlet容器&#xff0c;应用无需打成war包&#xff0c;内嵌tomcatStarters自动依赖和版本控制大量的自动装配…

Selenium 攻略:从元素操作到 WebDriver 实战

在自动化测试、网页数据爬取、批量操作网页等场景中&#xff0c;Selenium 无疑是最受欢迎的工具之一。作为一款强大的 Web 自动化工具&#xff0c;它能模拟人类操作浏览器的行为&#xff0c;实现点击、输入、跳转等一系列动作。本文将从基础到进阶&#xff0c;全面解析 Seleniu…

【算法训练营Day14】二叉树part4

文章目录找树左下角的值路径总和总结&#xff1a;递归函数的返回值路径总和 II总结&#xff1a;二叉树递归的思考从中序与后序遍历序列构造二叉树找树左下角的值 题目链接&#xff1a;513. 找树左下角的值 解题逻辑&#xff1a; 使用层序遍历&#xff0c;将最后一层的第一个元…

工资系统如何计算工资

工资系统计算工资是一个集成数据收集、规则应用、自动核算和合规审核的自动化过程&#xff0c;以下是其核心原理和步骤&#xff0c;结合技术实现与法规要求进行说明&#xff1a;⚙️ 一、工资系统的基本框架与数据准备系统初始化与规则配置企业信息设置&#xff1a;录入公司名称…

车载通信架构 --- DoIP协议通信

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

基于Event Sourcing和CQRS的微服务架构设计与实战

基于Event Sourcing和CQRS的微服务架构设计与实战 业务场景描述 在电商系统中&#xff0c;订单的高并发写入与复杂的状态流转&#xff08;下单、支付、发货、退货等&#xff09;给传统的CRUD模型带来了挑战&#xff1a; 数据一致性难保证&#xff1a;跨服务事务处理复杂&#x…

初级安全课第二次作业

&#xff08;一&#xff09;xss-labs 1~8关 1、前期准备 &#xff08;1&#xff09;打开小皮面板&#xff0c;并启动Apache和MySQL&#xff08;2&#xff09;将 xss-labs放到 phpstudy_pro 的 WWW 目录下&#xff08;3&#xff09;访问连接&#xff1a;http://localhost/xss-la…