当前位置: 首页 > 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.xdnf.cn/news/1324981.html

相关文章:

  • vue3 el-table-column 列头添加 图标按钮
  • 使用websockets中的一些问题和解决方法
  • day25|学习前端js
  • Day7--滑动窗口与双指针--1695. 删除子数组的最大得分,2958. 最多 K 个重复元素的最长子数组,2024. 考试的最大困扰度
  • JavaSE——高级篇
  • Java面试宝典:Redis 入门与应用
  • Poisson分布:稀有事件建模的理论基石与演进
  • 用随机森林填补缺失值:原理、实现与实战
  • 力扣hot100:移动零问题的巧妙解决:双指针与原地交换策略(283)
  • 开发避坑指南(28):Spring Boot端点检查禁用失效解决方案
  • Vue3 中使用 Element Plus 完整指南
  • Spring AI Alibaba 项目接入兼容 OpenAI API 的大模型
  • 杂记 05
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • Android使用Kotlin协程+Flow实现打字机效果
  • Python 作用域 (scope) 与闭包 (closure)
  • 【学习嵌入式-day-27-进程间通信】
  • Docker常见指令速查
  • 用户认证技术
  • STL库——string(类函数学习)
  • SQL详细语法教程(六)存储+索引
  • AI心理助手开发文档
  • 在python中等号左边的都是对象,在matlab中等号a = 3+2 a就是个变量
  • 力扣hot100:盛最多水的容器:双指针法高效求解最大容量问题(11)
  • openfeign 只有接口如何创建bean的
  • Linux设备树简介
  • vue3入门-v-model、ref和reactive讲解
  • Leetcode 16 java
  • Effective C++ 条款49:了解new-handler的行为
  • 力扣 hot100 Day77