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

代码随想录 -- 哈希表 -- 三数之和

15. 三数之和 - 力扣(LeetCode)

思路:

        本题适合采用双指针法。

1. 先将数组 nums 升序排序

2. 初始状态:i = 0 ,指针 left = i+1 ,指针 right = len(nums)-1 (left 要 < right)

3. 如果 nums[i] > 0,则不存在满足条件的三元组;

    如果 nums[i] + nums[left] + nums[right] > 0,right 指针向前移动;

    如果 nums[i] + nums[left] + nums[right] < 0,left 指针向后移动;

    如果 nums[i] + nums[left] + nums[right] == 0,找到符合条件的三元组,加入res列表。

4. 去重:

    对于 i:当 i > 0 时,如果 nums[i] == nums[i-1],i += 1;

    对于 left:如果 nums[left] == nums[left-1],left += 1;

    对于 right:如果 nums[right] == nums[right+1],right -= 1.

class Solution(object):def threeSum(self, nums):nums.sort()res=[]for i in range(len(nums)):if nums[i]>0:return resif i>0 and nums[i]==nums[i-1]:continueleft,right=i+1,len(nums)-1while left<right:sum = nums[i]+nums[left]+nums[right]if sum>0:right-=1elif sum<0:left+=1else:res.append([nums[i],nums[left],nums[right]])while left<right and nums[right]==nums[right-1]:right-=1while left<right and nums[left]==nums[left+1]:left+=1left+=1right-=1return res

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Django 框架中F和Q的作用
  • 富格林:极力破除欺诈维护安全
  • 以太网PHY驱动调试笔记(KSZ8081)
  • 代码随想录算法day25 | 贪心算法part03 | 134. 加油站,135. 分发糖果,860.柠檬水找零,406.根据身高重建队列
  • 算法学习-基础数据结构
  • 【python】懂车帝字体反爬逐层解密案例(附完整代码)
  • 中秋佳节,数码好礼伴团圆:中秋节五大数码礼品指南
  • docker compose用法详解
  • 深度确定问题中的树森林操作:分析与实现
  • OpenCV+Python识别机读卡
  • 盘点国内外最好用的12款源代码加密软件:总有一款适合你
  • Python爬虫,爬取某网站小说
  • Nvidia财报前夕:市场预期股价波动创纪录,AI芯片巨头引领市场热潮
  • DNS劫持问题
  • ArcGIS Pro技术应用
  • hexo+github搭建个人博客
  • chrome扩展demo1-小时钟
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java 最常见的 200+ 面试题:面试必备
  • jquery ajax学习笔记
  • Linux gpio口使用方法
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • orm2 中文文档 3.1 模型属性
  • python学习笔记-类对象的信息
  • Redux系列x:源码分析
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 批量截取pdf文件
  • 使用 QuickBI 搭建酷炫可视化分析
  • -- 数据结构 顺序表 --Java
  • 说说动画卡顿的解决方案
  • 我的面试准备过程--容器(更新中)
  • 阿里云服务器购买完整流程
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • 移动端高清、多屏适配方案
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​水经微图Web1.5.0版即将上线
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #07【面试问题整理】嵌入式软件工程师
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (面试必看!)锁策略
  • (转) Face-Resources
  • (转)Sql Server 保留几位小数的两种做法
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***检测工具之RKHunter AIDE
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net 流——流的类型体系简单介绍
  • .NET/C# 的字符串暂存池
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试