[一起来刷leetcode吧][33]--No.15 3Sum

leetcode刷题指南 - 两个月完成 链表(8题) + 双指针(11题) = 19题。: 数据结构类(19题) = 19题。 阅读详情
这篇文章是程序自动发表的,详情可以见 这里
href="http://ounix1xcw.bkt.clouddn.com/github.markdown.css" rel="stylesheet">

这是leetcode的第15题--3Sum

  题目

Given an array S of n integers, are there elements a, b, c in S such that a b c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets.

For example, given array S = [-1, 0, 1, 2, -1, -4],

A solution set is:
[
  [-1, 0, 1],
  [-1, -1, 2]
]

  思路 最开始我想的就直接3重循环,再加判重的循环,暴力求解,当然超时了,要高于O(n3)。后来想到可以将正负数,0,分成三组来组合,然而最后两个数据过不了,在网上搜了一下,可以固定一个数,头尾双指针来移动,这是O(n2)。哎,折腾了一晚上,我好菜啊。 这是前几次的结果3sum

  

show me the code

class Solution(object):
    def threeSum(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """

        rst = []
        zero = []   #zeros
        neg = []    #negative
        pos = []    #positive
        for i in (nums):
            if i < 0:
                neg.append(i)
            elif i > 0:
                pos.append(i)
            else:
                zero.append(i)
        if len(zero) > 2:
            rst.append([0,0,0])
        if neg == []  or  pos == []:
            return rst
        if zero != []:
            if len(neg) > len(pos):
                for i in pos:
                    if -i in neg:
                        rst.append([-i,0,i])
            else:
                for i in neg:
                    if -i in pos:
                        rst.append([i,0,-i])
        pos.sort()
        neg.sort()
        if len(pos) == 1 and len(neg) == 1:
            return rst
        elif len(pos) == 1 :
            tmp = len(neg) - 1
            while tmp > 0:
                sum = neg[tmp]   neg[tmp-1]
                if sum == - pos[0]:
                    rst.append([neg[tmp-1],neg[tmp],pos[0]])
                    break
                elif sum < - pos[0]:
                    break
                tmp -= 1
        elif len(neg) == 1:
            tmp = 0
            while tmp < len(pos) - 1 :
                sum = pos[tmp]   pos[tmp 1]
                if sum == - neg[0]:
                    rst.append([neg[0],pos[tmp],pos[tmp 1]])
                    break
                elif sum > - neg[0]:
                    break
                tmp -= 1
        sameI = []     #avoid test several same num
        for i in range(len(pos)-1):
            if i in sameI:
                continue
            sameI.append(i)
            sameJ=[]
            for j in range(i 1,len(pos)):
                if j in sameJ:
                    continue
                sameJ.append(j)
                sum = pos[i]   pos[j]
                for k in neg:
                    if   sum > -k:
                        break
                    elif sum == -k:
                        rst.append([k,pos[i],pos[j]])
        sameI = []
        for i in range(len(neg)-1):
            if i in sameI:
                continue
            sameI.append(i)
            sameJ=[]
            for j in range(i 1,len(neg)):
                if j in sameJ:
                    continue
                sameJ.append(j)
                sum = neg[i]   neg[j]
                for k in pos:
                    if   sum > -k:
                        break
                    elif sum == -k:
                        rst.append([neg[i],neg[j],k])
        fnl = []   
        for i in rst:
            if i not in fnl:
                fnl.append(i)
        return fnl 
分享刷LeetCode算法题pdf笔记,看完你就是面试官 废话不多说,直接上算法刷题笔记 百度网盘地址链接:https://pan.baidu.com/s/1Z0j_F4KSJE8q9j5Rs8p6Lg 提取码:you1 关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题均附有详细题解过程。很多人表示刷数据结构和算法题效率不高,甚是痛苦。有了这个笔记的总结,对校招和社招的算法刷题帮助之大不言而喻,果断推荐给大家。 第二章算法专题 Array Backtracking Bina... 阅读详情

相关推荐

LeetCode刷题记录--- 微软企业题库

😄 今天是2022年10月30号,我开始了LeetCode的《微软企业题库》专题 刷题!

weixin_43646592的博客 2061

LeetCode --- 15. 3Sum

题目链接:3Sum Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: *Elements in a triplet (a

makuiyu的专栏 2350

【QGIS】【OsGeo4w】安装方法

every blog every motto: You will never know unless you try 0. 前言 因为目前要使用QGIS,然而环境配置就整了大半天,哎,进行简单记录,方便自己方便他人。 一共分为两种方式安装: 独立安装包 网络安装包(下载osgeo4w-setup) QGIS提供了不同的版本: 长期发行版(LTR) 最新版(LR) 开发人员版本(DEV,母版或测试版) 说明: 本文推荐第二种 1. 正文 1.1 下载osgeo4w 下载链接 下载完成: 1.2

胡侃有料的博客 2万+

15. 3Sum

15. 3Sum Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution se...

TZJ0709的博客 203

携程酒店数据爬取进阶:动态接口破解与反反爬策略实战

本文详细解析了携程酒店数据爬取的进阶技巧,包括动态接口参数破解、反爬虫策略对抗及企业级采集方案实现。重点介绍了eleven参数的生成逻辑、动态Cookie维护方法,以及如何应对携程的请求指纹检测和行为模式识别。通过实战案例,帮助开发者高效获取酒店价格数据,同时遵守行业规范。

eee77的博客 1078

NAO V6 开发环境的配置(附所有文件)

NAO V6开发环境配置前言环境Robot SettingsChoregraphe 2.8.5.10python2.7+naoqi2.8+opencv4.1.0putty与FileZilla 前言 学校的机器人摸索了一段时间,之前摸爬滚打探索环境,之前没接触这类机器人可能会非常艰辛,希望能给需要的人一些帮助。Nao与pepper通用 环境 win10(x64)+naoqi2.8 1、Robot S...

wbhhello的博客 3218

LeetCode 15. 3Sum

原题链接在这里:https://leetcode.com/problems/3sum/ 题目: Given an arraySofnintegers, are there elementsa,b,cinSsuch thata+b+c= 0? Find all unique triplets in the array which gives the sum of ...

weixin_30892987的博客 99

AppStore逆向分析:从网络抓包到自动化模拟的完整实践

在移动应用生态中,理解客户端与服务器之间的通信协议是进行自动化测试、数据分析和系统集成的关键技术基础。通过分析网络请求与响应,可以深入理解认证、会话管理和数据交换的原理,这对于构建稳定的自动化流程至关重要。其技术价值在于能够实现合法场景下的流程模拟,例如应用元数据监控、沙盒环境测试或内部工具开发。在实际应用场景中,开发者常需处理登录态维持、请求签名验证及风控策略应对等挑战。本文聚焦于AppStore这一封闭生态,详细拆解了其登录、查询等核心环节的通信机制,并探讨了使用Python结合抓包工具进行安全逆向分析

weixin_42524171的博客 926

Leetcode->array分类1.Two Sum 4. Median of Two Sorted Arrays 11. Container With Most Water 15. 3sum

1.two sum Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. 首先想两个for循环遍历,排除掉。 既然‘you may not use the same element twice’,用过的num就不在选择范围里 ...

王大胖的博客 272

Qt Design Studio 入门指南:从零开始打造炫酷UI(详细+实用+轻松上手)

本文是Qt Design Studio的详细入门指南,旨在帮助UI设计新手从零开始轻松打造炫酷界面。文章系统介绍了软件的核心概念、安装步骤、主界面解析,并通过创建一个完整的登录界面实例,手把手教学如何拖拽组件、设置属性、添加交互状态与动画。同时,分享了创建自定义组件、管理资源以及提升效率的实用技巧与常见问题解决方案,让读者能够快速上手并应用于实际项目开发。

devops8pract的博客 588

PVE虚拟机运行不流畅,出现卡顿。

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 3061

Leetcode题medium11/15/16/18/31/33/34/39/40,Python多种解法(三)

前文   继上一篇:Leetcode题121/122/167/169/189/217/219/268/283,Python多种解法(二),这次开始分享数组medium的题,说实在的,到了中等题,很难自己过了,只有少部分和easy一样难度的题才能过,打击还是有的,不过还是继续刷吧,等二刷三刷的时候,相信自己的代码能力和算法能力应该会有提高的!那开始上题了! 11. Container With Mo...

weixin_42681866的博客 455

骑砍Ⅱ霸主MOD开发(16)-FaceKey&BannerKey

摘要:本文介绍了FaceKey人物模型和BannerKey旗帜模型的生成流程。FaceKey通过序列化参数生成人物模型,包括头部(脸部、嘴、睫毛、眼睛)、眉毛、头发、身体和躯干等组件,每个部分通过特定标签和骨骼绑定实现。BannerKey则通过解析参数生成旗帜模型,包括模型、贴图和颜色等元素。两种模型都采用参数化设计和XML配置文件实现模型生成与定制。

骑砍战团&霸主MOD开发 2284

LeetCode刷题——第 72 场双周赛和第 281 场力扣周赛

第 72 场双周赛 和 第 281 场力扣周赛: 5996. 统计数组中相等且可以被整除的数对; 5997. 找到和为给定整数的三个连续整数; 5998. 拆分成最多数目的偶整数之和; 5999. 统计数组中好三元组数目; 6012. 统计各位数字之和为偶数的整数个数; 6013. 合并零之间的节点; 6014. 构造限制重复的字符串; 6015. 统计可以被 K 整除的下标对数目;

艾醒的博客 1299

端侧 AI 落地避坑指南(中):为什么 QAT 救不了精度?——对齐“融合后算子“的硬件物理约束

在上一篇文章中,我们深入探讨了量化的本质,并得出结论:QAT(量化感知训练)是保持精度的关键。明明做了 QAT,精度还是崩塌了!让我们看一个真实的案例:✅ 使用了✅ 配置了量化✅ 训练了 50 个 epoch,学习率降为原来的 1/10✅ 冻结了 BN 统计量FP32 模型:mAP = 0.85QAT 后 FP32:mAP = 0.84(正常)工具量化后:mAP = 0.68(崩塌!问题出在哪里?层融合(Layer Fusion)机制。

weixin_51988935的博客 55

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode 923. 3Sum With Multiplicity

原题链接在这里:https://leetcode.com/problems/3sum-with-multiplicity/ 题目: Given an integer arrayA, and an integertarget, return the number oftuplesi, j, k such thati < j < kandA[i] + A[j]...

weixin_30650859的博客 135

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[leetcode 15] 3sum && [leetcode 16] 3sum closest

Given an arraySofnintegers, are there elementsa,b,cinSsuch thata+b+c= 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) must...

weixin_30651273的博客 90

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

15. 3Sum

题目链接:https://leetcode.com/problems/3sum/ 解题思路: 数组里面找三个数,相加等于某个数,然后返回这些数,而且数字不能重复。 1、要想数字不重复,首先就要先对数组排序,反正返回的是数字,不是下标。 2、想要保证list里面没有重复的list,就一定要用Hashset,hash表能保证不重复。 3、固定第一个数,然后第二个数从i+1,第三个数从l...

weixin_30919235的博客 131

leetcode 3sum c语言

c语言版本我只是写出了输出版本,由于对c的二维指针内存分配不是很清楚,所以没有按照题目上规定定义函数。 如果有人看到能帮我修改一下最好了,欢迎留言。 思路: 1,先按照由小到大把数组排序 2,循环取第i位,数值a[i],  后面剩余的由旁边向中间扫描,看是否符合 a[m]+a[n] == -a[i],如果a[m]+a[n]>-a[i],则向右边移动m,如果小于则向左边移动n  /****

亚马逊丛林 1552

[Leetcode] 15.3Sum

本题可转化成2Sum问题,但不同的是需要注意有可能有多值,需要在添加过程中去掉重复的元素。代码如下: 1 class Solution 2 { 3 public: 4 vectorint> > threeSum(vectorint> &num) 5 { 6 vectorint> > res; 7 sort(num.begin(), n

NULL 179

【leetcode刷题笔记】3Sum

Given an arraySofnintegers, are there elementsa,b,cinSsuch thata+b+c= 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) must...

weixin_30687811的博客 74

LeetCode(15)题解--3Sum

https://leetcode.com/problems/3sum/ 题目: Given an arraySofnintegers, are there elementsa,b,cinSsuch thata+b+c= 0? Find all unique triplets in the array which gives the sum of zero. N...

weixin_30618985的博客 56

leetCode 15. 3Sum

Given an arraynumsofnintegers, are there elementsa,b,cinnumssuch thata+b+c= 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not cont...

weixin_34055787的博客 82
上一篇: [一起来刷leetcode吧][32]--No.79 Integer to Roman
下一篇: [一起来刷leetcode吧][34]--No.55 jump game
mbinary
博客等级 码龄9年 39粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值