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

15.三数之和

链接

思路

排序+双指针
1.对元素从小达到排序
2.固定i,开始循环
3.循环开始,判断i-1是否和前面的i相同,如果相同,就跳过。i-1是为了避免索引溢出
4.计算三数之和,如果等于0,那就加入结果;并且j和k都移动一位,然后判断是否和下一个相同,相同就跳过
5.如果小于0,说明j太小,右移一位
6.如果大于0,说明k太大,左移一位

代码

class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:res = []nums.sort()n = len(nums)for i in range(n):if i > 0 and nums[i] == nums[i-1]:continuej,k = i+1,n-1while j < k:temp = nums[i] + nums[j] + nums[k]if temp == 0:res.append([nums[i], nums[j], nums[k]])j,k = j+1,k-1while j < k and nums[j] == nums[j-1]:j = j+1while j < k and nums[k] == nums[k+1]:k -= 1elif temp < 0:j = j+1else:k = k-1return res

复杂度

O(N^2)
外层for循环O(N),内存while循环O(N)

http://www.dtcms.com/a/336965.html

相关文章:

  • InfluxDB 开发工具链:IDE 插件与调试技巧(二)
  • 01.Linux小技巧
  • 从 UI 角度剖析蔬菜批发小程序的设计之道——仙盟创梦IDE
  • STRIDE威胁模型
  • IDE开发系列(1)基于QT的简易IDE框架设计
  • 【P38 6】OpenCV Python——图片的运算(算术运算、逻辑运算)加法add、subtract减法、乘法multiply、除法divide
  • 实践笔记-VSCode与IDE同步问题解决指南;程序总是进入中断服务程序。
  • 面试 TOP101 二叉树专题题解汇总Java版(BM23 —— BM41)
  • 深入解析StatefulSet与K8s服务管理
  • 集成电路学习:什么是Face Detection人脸检测
  • 多线程初阶-线程安全 (面试和工作的重点!!!)
  • Vue2篇——第六章 Vue 路由(VueRouter)全解析
  • Linux系统网络排查工具总结
  • org.apache.kafka.clients 和 org.springframework.kafka 的区别
  • kafka 发送消息有哪些模式?各自的应用场景是什么?
  • Elasticsearch全文检索中文分词:IK分词器详解与Docker环境集成
  • AI编程工具对决:Kilo vs Augment 开发Flutter俄罗斯方块游戏实战对比
  • 【AI论文】UI-Venus技术报告:借助强化微调(RFT)打造高性能用户界面(UI)代理
  • 手写Spring容器核心原理
  • 加密资产投资的六种策略:稳定币合规后的 Web3 投资和 RWA
  • 杂记 05
  • ARM 架构简明教程学习笔记
  • 微信原生小程序的一次gulp构建
  • DevExtreme Angular UI控件更新:引入全新严格类型配置组件
  • Kafka的ISR、OSR、AR详解
  • Rust学习笔记(六)|Rust 中的常用集合(Vector、String、HashMap)
  • Linux网络服务(一)——计算机网络参考模型与子网划分
  • 计算机网络:2、TCP和UDP
  • Golang context
  • CentOS 7 LAMP快速部署WordPress指南