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

Leetcode-15. 三数之和

排序 + 双指针
本题的难点在于如何去除重复解

image.png

class Solution:def threeSum(self,nums):nums.sort()a=[]for k in range(len(nums)-2):if nums[k]==nums[k-1] and k>0:continuei=k+1j=len(nums)-1while i<j:left=nums[i]right=nums[j]total=nums[k]+left+rightif total==0:a.append([nums[k],nums[i],nums[j]])while i<j and nums[i]==nums[i+1]:i+=1while i<j and nums[j]==nums[j-1]:j-=1i+=1j-=1elif total<0:i+=1else:j-=1return a

特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回 []。

对数组进行排序。
遍历排序后数组:
若 nums[i]>0:因为已经排序好,所以后面不可能有三个数加和等于 0,直接返回结果。

对于重复元素:跳过,避免出现重复解
令左指针 L=i+1,右指针 R=n−1,当 L<R 时,执行循环:
当 nums[i]+nums[L]+nums[R]== 0

执行循环,判断左界和右界是否和下一位置重复,去除重复解。
(这一步最细,因为同一个num[i]可以配不同的num[L],num[R],即使一开始有total=0,后续也可以有一对,所以这里还有去重和检查一遍)

并同时将 L,R 移到下一位置,寻找新的解
若和大于 0,说明 nums[R] 太大,R 左移
若和小于 0,说明 nums[L] 太小,L 右移


文章转载自:
http://hombre .hnsdj.cn
http://japonic .hnsdj.cn
http://gavage .hnsdj.cn
http://strophoid .hnsdj.cn
http://neoplasia .hnsdj.cn
http://prolongable .hnsdj.cn
http://sneering .hnsdj.cn
http://voluble .hnsdj.cn
http://hwan .hnsdj.cn
http://nilpotent .hnsdj.cn
http://cevitamic .hnsdj.cn
http://hagiographer .hnsdj.cn
http://mitigant .hnsdj.cn
http://interiorly .hnsdj.cn
http://trinitarianism .hnsdj.cn
http://schoolwork .hnsdj.cn
http://overroof .hnsdj.cn
http://irrespective .hnsdj.cn
http://prisunic .hnsdj.cn
http://racinage .hnsdj.cn
http://paralimnion .hnsdj.cn
http://traveled .hnsdj.cn
http://task .hnsdj.cn
http://winterbourne .hnsdj.cn
http://classis .hnsdj.cn
http://dyspathy .hnsdj.cn
http://aniline .hnsdj.cn
http://spawny .hnsdj.cn
http://offspring .hnsdj.cn
http://chancellorship .hnsdj.cn
http://www.dtcms.com/a/293743.html

相关文章:

  • 《计算机“十万个为什么”》之 [特殊字符] 深浅拷贝 引用拷贝:内存世界的复制魔法 ✨
  • 1.1 Deep learning?pytorch ?深度学习训练出来的模型通常有效但无法解释合理性? 如何 解释?
  • 英语词汇积累Day1-10(summary)
  • Django实战:Python代码规范指南
  • 【Java】Reflection反射(代理模式)
  • 算法竞赛备赛——【图论】最小生成树
  • 《元素周期表》超高清PDF
  • IDEA如何管理多个Java版本。
  • STM32 基础知识 定时器【概念】
  • 基于PyTorch的多视角二维流场切片三维流场预测模型
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-微博点赞量Top6实现
  • 19.动态路由协议基础
  • 备受关注的“Facebook Email Scraper”如何操作?
  • 开源 Arkts 鸿蒙应用 开发(十)通讯--Http
  • 腾讯云推出CodeBuddy:革新AI全栈开发体验
  • 第六章 W55MH32 UDP Multicast示例
  • 神经架构搜索革命:从动态搜索到高性能LLM的蜕变之路
  • AI 搜索引擎:让信息“长脑子”而不是“堆数据”
  • 解决 i.MX6ULL 通过 ADB 连接时权限不足问题 not in the plugdev group
  • 网络调制技术对比表
  • Numpy 库 矩阵数学运算,点积,文件读取和保存等
  • 线段树学习笔记 - 练习题(1)
  • iOS 性能监控 苹果手机后台运行与能耗采样实战指南
  • 沉浸式文旅新玩法-基于4D GS技术的真人数字人赋能VR体验升级
  • 深度相机---像素转物理尺寸
  • 【基于OpenCV的图像处理】图像预处理之二值化处理以及图像的仿射变换
  • 基于Python flask的常用AI工具功能数据分析与可视化系统设计与实现,技术包括LSTM、SVM、朴素贝叶斯三种算法,echart可视化
  • linxu CentOS 配置nginx
  • 字节 AI 编辑器 Trae 2.0 SOLO 出道! 国际版不充分指南及与国内版的对比
  • 【web页面接入Apple/google/facebook三方登录】