排序 + 双指针:力扣15三数之和

先排序,再双指针

和太小左指针动,和太大右指针动

最大的难点在于需要去重

PREP

三数之和的标准解法是排序加双指针,同时在三处做去重。

目标是 a+b+c=0,变形为 b+c = -a。

我们外层 for 循环固定第一个数 a,用双指针去找b 和 c;和偏小左指针右移,和偏大右指针左移;

通过 i 去重、找到解后 left 和 right 去重,避免输出一模一样的三元组。

i去重指的是如果当前a 和上一轮的a一样,跳过本轮;

找到解后的left去重指的是:找到答案之后,把left后面所有和b相同的全部跳过。防止同一个a下,相同的b再次配对,产出重复答案。

找到解后的right去重指的是:找到答案之后,把right前面所有和c相同的全部跳过

总的来说,把三层暴力 O (n³) 优化到 O (n²)。

相关推荐
文丑颜不良啊30 分钟前
LeetCode1901~1920题目解析
java·leetcode
Pniubi41 分钟前
力扣3无重复字符的最长字串(滑动窗口)
算法·leetcode·职场和发展
On The Road :1 小时前
深入理解 JVM 垃圾回收:GC 是什么、如何判定垃圾、四大回收算法全解析
jvm·算法
微尘hjx2 小时前
【Deep-OC-SORT 03】多轨迹算法Deep-OC-SORT-卡尔曼滤波预测过程
算法·yolo·目标跟踪·ultralytics·车跟踪·轨迹算法·deep-oc-sort
老师我太想进步了20264 小时前
【数据结构-3】算法美学之降复杂度
数据结构·算法
机器人零零壹9 小时前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
ZhengEnCi12 小时前
大模型的分类到底怎么分:从基础模型到推理模型、从通用到专用的完整图谱
算法
取名真是13 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
罗西的思考13 小时前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习