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

leetcode15.三数之和题解:逻辑清晰带你分析

介绍

在这里插入图片描述
题源

分析

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.lryc.cn/news/592321.html

相关文章:

  • 华为欧拉系统(openEuler)安装 Docker 容器完整教程
  • Gemini Function Calling 和 Qwen3 Embedding和ReRanker模型
  • 服务器清理空间--主要是conda环境清理和删除
  • 弧焊机器人智能节气装置
  • Huber Loss(胡贝损失)详解:稳健回归的秘密武器 + Python实现
  • 【Git专栏】git如何切换到某个commit(超详细)
  • 铁路基础设施无人机巡检技术及管理平台
  • 【IOS webview】IOS13不支持svelte 样式嵌套
  • 计算机网络知名端口分配全表(0-1023)
  • 前端之CSS
  • Http请求中的特殊字符
  • 太阳辐射监测站:洞察太阳能量的科技之眼
  • RabbitMQ—TTL、死信队列、延迟队列
  • k8s:手动创建PV,解决postgis数据库本地永久存储
  • Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
  • 基于K8s ingress灰度发布配置
  • Docker报错:No address associated with hostname
  • 使用python读取json数据,简单的处理成元组数组
  • 内网部署yum源
  • 美团闪购最新版 mtgsig1.2
  • 从服务实例的元数据中获取配置值 vs 从本地配置文件中获取配置值
  • 4G模块 A7680发送中文短信到手机
  • IT66122替代IT66121-富利威
  • 「源力觉醒 创作者计划」_巅峰对话:文心 4.5 vs. DeepSeek / Qwen 3.0 深度解析(实战优化版)
  • 文件管理-文件控制块和索引节点
  • Java 抽象类与接口深度解析
  • 进阶数据结构:红黑树
  • 可靠消息最终一致性分布式事务解决方案
  • Web3加密货币交易:您需要知道的所有信息
  • MySql:索引,结构