当前位置: 首页 > 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.dtcms.com/a/286463.html

相关文章:

  • AWS(基础)
  • 网络基础10 :ACL真机实验
  • Redis原理之哨兵机制(Sentinel)
  • 【洛谷P1417】烹调方案 题解
  • ONNX模型使用指南:从零开始掌握跨领域模型部署
  • 图片平铺下去总是有个缝隙的解决方案
  • 塞舌尔公司的查册报告Certificate of Official Search是什么?有什么信息
  • 瀚高数据库开启Oracle兼容模块
  • vue2 面试题及详细答案150道(101 - 120)
  • ubuntu20.04使用unity3d做机器人仿真环境搭建
  • Python单例模式详解:从原理到实战的完整指南
  • 详解Linux(Ubuntu/RedHat/CentOS)及国产服务器统一加域管理方案
  • GoC 上册课程
  • java+vue+SpringBoot集团门户网站(程序+数据库+报告+部署教程+答辩指导)
  • docker--程序自启动
  • HIMA X-DO3201模块的冗余配置方法
  • Python Pandas 实践学习笔记(1)
  • Chainlit + FasiAPI+ LlamaIndex 实现RAG(一)
  • 深入解析:短连接 vs 长连接 vs 短轮询 vs 长轮询
  • keil5使用技巧----keil-build-viewer.exe插件使用
  • 前端性能优化“核武器”:新一代图片格式(AVIF/WebP)与自动化优化流程实战
  • Ubuntu查看Docker容器
  • React智能Tooltip封装术:精准检测文本溢出,告别无效提示!
  • Linux下使用原始socket收发数据包
  • 4644电源管理芯片在微波射频组件中的技术优势与国产化实践
  • 《5分钟开发订单微服务!飞算JavaAI实战:IDEA插件安装→空指针修复→K8s部署全流程》
  • 高并发、高性能、高可用
  • LeetCode热题100【第4天】
  • openinstall九周年:聚焦安全防御,护航业务持续增长
  • 40+个常用的Linux指令——上