Leetcode[数组] 三数之和 -- 双指针法

2023-11-06

0 题目描述

leetcode原题链接:三数之和
在这里插入图片描述

1 排序+双指针解法

在这里插入图片描述

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:

        n = len(nums)
        if (not nums or n < 3): return []
        nums.sort()
        res = []
        for i in range(n):
            if (nums[i] > 0): return res
            if (i > 0 and nums[i] == nums[i - 1]): continue
            # 双指针L,R
            L = i + 1
            R = n - 1
            while (L < R):
                if (nums[i] + nums[L] + nums[R] == 0):
                    res.append([nums[i], nums[L], nums[R]])
                    while (L < R and nums[L] == nums[L + 1]):
                        L = L + 1
                    while (L < R and nums[R] == nums[R - 1]):
                        R = R - 1
                    L = L + 1
                    R = R - 1
                elif (nums[i] + nums[L] + nums[R] > 0):
                    R = R - 1
                else:
                    L = L + 1
        return res

复杂度分析
时间复杂度: O ( n 2 ) O(n^2) O(n2),数组排序 O ( N log ⁡ N ) O(N \log N) O(NlogN),遍历数组 O ( n ) O(n) O(n),双指针遍历 O ( n ) O(n) O(n),总体 O ( N log ⁡ N ) O(N \log N) O(NlogN)+ O ( n 2 ) O(n^2) O(n2)
空间复杂度: O ( 1 ) O(1) O(1)

参考资料

三数之和
Leetcode[数组] 两数之和 – 哈希解法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode[数组] 三数之和 -- 双指针法 的相关文章

随机推荐

  • NodeMcu arduino ESP8266 使用WIFIManager 库

    WiFiManager库使用说明 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 W
  • matlab作出马鞍面,[2018年最新整理]实验一马鞍面绘制实验.ppt

    2018年最新整理 实验一马鞍面绘制实验 10 实验一 马鞍面绘图实验 实验目的和实验内容 实验原理 实验相关的思考问题 熟悉几个函数 mesh contour linspace figure 显示图形框 mesh X Y Z Meshz
  • 项目上线后遇到的问题总结

    项目上线了 一堆堆的问题也随之出现了 除了时间比较匆忙导致没有细致的做验证之外 当初也确实没有在最重要的功能需求上把好关 导致后来要做很多的修改而弥补之前的错误 下面是上线后遇到的问题和解决办法总结 问题一 用户非正常流程导致的错误 用户注
  • 【读书笔记->统计学】07-03 离散型概率分布-泊松分布概念简介

    泊松分布 假设一个情境 下星期电影院有一个大型促销 影院经理希望一切都完美无缺 爆米花机每一周的平均故障次数为3 4 或者说爆米花机的故障率为3 4 求爆米花机下一周不发生故障的概率有多大 如果预计故障太多次 就打算买个新的爆米花机了 与前
  • 嵌入式系统编程中常用的回调处理

    在嵌入式编程中经常看到形如下图所示的一些函数调用或者函数初始化 这种形式的原理 以及在编程过程中能带来什么好处 可以通过下面这篇文章来简单的解释和说明 函数是C语言的核心概念 主调函数 caller 调用被调函数 callee 是一般的调用
  • 用《文心一言》1分钟写一篇博客简直yyds

    文章目录 前言 文心一言是什么 文心一言可以做什么 文心一言写博客 申请体验 写在最后 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 前言 当今社会 博客已成为了许多
  • Java从List中删除元素的正确用法

    还是先举个例子 你侄女对天文知识感兴趣 然后你就用程序写了太阳系九大星系 水星 金星 地球 火星 木星 土星 天王星 海王星 冥王星 的运行轨迹图 然后拿给侄女看 然后她说错了错了 你的知识太旧了 多了一颗星 根据2006年8月24日国际天
  • 把每八行格式重复的txt文件导入数据库

    记录代码 private static String url unic useUnicode true characterEncoding utf8 public static void main String args throws SQ
  • Java思维编程

    编程思维可以具体分为四个方面 分解 拥有编程思维的人 会把一个复杂的大问题 拆解成更可执行 更好理解的小步骤 复杂问题很难一下子破解 但如果把它细分成很多个小问题 逐步解决 就容易多了 模式识别 什么是模式识别呢 所谓识别模式 其实就意味着
  • JAVA基础之单元测试

    目录 1 单元测试介绍 2 环境搭建 2 1 JUnit 4 2 2 JUnit 5 3 快速上手 3 1 JUnit 4 3 2 JUnit 5 1 单元测试介绍 单元测试就是针对最小的功能单元编写测试代码 Java程序最小的功能单元是方
  • 区块链四:共识机制——PBFT算法深入讲解

    TOC 背景介绍 共识机制是区块链一大知识领域 作用就是维持分布式节点间的一致性 从而支撑去中心化 早在区块链之前 就存在各种分布式的共识机制 共识机制不是因区块链所发明 但区块链却对共识机制推广和进步有着重要影响 共识算法分类 按应用场景
  • Python 超简单实现人类面部情绪的识别

    还记得我们之前写过一篇文章 手把手教你人脸识别自动开机 吗 里面用OpenCV对人脸进行简单的识别 让计算机训练认识到某个特定人物后识别对象 今天来做点高级的 识别出人脸的情绪 本文分为两大部分 1 面部检测 检测图像的脸部位置 输出边界框
  • 《现代控制系统》第五章——反馈控制系统性能分析 5.4 二阶系统里面极点以及零点带来的影响

    上一节图里面描绘的曲线 仅仅是针对阶跃响应为 的系统来说的 但是这给我们提供了一个很好的例子 许多系统拥有成对的主极点 我们可以通过类似上图的关系来估计系统的阶跃响应 这个方法尽管只是一个估算 但却能在避免拉普拉斯转化的情况下提供一个对超调
  • Unity接SDK - 极光推送

    2021 09 09记录 2023发布 如有不对 还请包含 发晚了 如果想看Android原生接入JPush SDK 移步Android原生集成JPush SDK jpush android sdk v4 7 2 极光推送 接入 版本 Un
  • MFC 向指定窗口发送自定义消息

    像MFC的窗口发送消息 可以进行自定义的动作行为 因此很多时候非常有用 1 在MSGDlg h或者其他头文件中增加自定义自定义消息 define WM COUNT MSG WM USER 100 2 在MSGDlg h头文件中添加消息处理函
  • 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)

    本人比较热衷于算法 也可能工作的原因 最近一直在研究算法 现将各种排序算法总结在一起 以便于查阅与使用 也希望能够帮助学习排序算法的朋友 1 冒泡算法 这是最原始 也是众所周知的最慢的算法了 他的名字的由来因为它的工作看来象是冒泡 C C
  • openFeign使用get请求自动变成post请求

    Feign的一次坑 记一次 项目错误 之前项目写的feign是get请求 然后发现 请求不了 然后发现日志 请求自动变成post 网上翻阅资料发现 说使用对象类型会把请求自动变成post 所以我改post请求就可以了 查阅资料 总结 fei
  • pointnet分割自己的点云数据_基于超点图的大规模点云分割

    本期介绍一篇基于大规模点云的语义分割相关论文 Large scale Point Cloud Semantic Segmentation with Superpoint Graphs 本文提出了针对大规模点云的语义分割的框架 有序的点云是可
  • IOS:修改NavigationController的后退按钮标题

    今天遇到一问题 折腾很久总算搞明白了 问题是 controllerA和controllerB 点击controllerA中的某个按钮 将controllerB push出来 controllerB上的返回按钮的title不是我想要的 想改掉
  • Leetcode[数组] 三数之和 -- 双指针法

    0 题目描述 leetcode原题链接 三数之和 1 排序 双指针解法 class Solution def threeSum self nums List int gt List List int n len nums if not nu