[LeetCode] 15. 3Sum

Leetcode | C++ 15.3Sum 题意 中文描述 给定一个包含n个整数的数列S, 找出所有的独特的3个数列中的元素a,b,c使得a + b + c = 0。 注意: 结果集只包含不重复的三元组。 题解 算法及复杂度(382 ms) 本题与第1题(Two Sum)有类似之处,从题目上就可以看出来,第1题是两个数的和,而本题是求三个数的和。 由于要求三元组不能重复,所以可以想到进行排序,这样就可以很容易的发现重复的三元组。为什么通过排序容易发现重复结果?如果在无序的数列中进行操作,得到了满足a + b +c = 0之后,还需要对三元组的重复情况 阅读详情

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 set must not contain duplicate triplets.
Example:

Given array nums = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]

解析

因为要去重,所以不能先固定一个数,用Two Sum的方法去找另外两个数。
先对数组进行排序,然后固定一个数,并且利用左右两个指针来找另外两个数。
当遇到某个数>0时,可以直接跳过,因为后面的数加起来不可能等于0,当前数与前面重复时,直接跳过。
如果找到两个数的和等于target=0-当前数,左右指针都要跳过重复的。

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int> > res;
        int size = nums.size();
        if(size<3)
            return res;
        sort(nums.begin(),nums.end());
        for(int i=0;i<size;i++){
            if(nums[i]>0) 
                break;
            if(i>0 && nums[i]==nums[i-1])
                continue;
            int target = 0-nums[i];
            int l = i+1,r = size-1;
            while(l<r){
                if(nums[l] + nums[r] == target){
                    res.push_back({nums[i],nums[l],nums[r]});
                    while(l<r && nums[l] == nums[l+1])
                        l++;
                    while(l<r && nums[r] == nums[r-1])
                        r--;
                    l++;
                    r--;                    
                }
                else if(nums[l] + nums[r] < target)
                    l++;
                else
                    r--;
            }
        }
        return res;
    }
};

参考

http://www.cnblogs.com/grandyang/p/4481576.html

STM32F4系列HAL库配置定时器实验——输入捕获 STM32F4系列HAL库配置定时器实验——输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率。我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数模式, 图中 t1~t2 时间,就是我们需要测量的高电平时间。测量方法如下:首先设置定时器通道 x 为 上升沿捕获,这样,t1 时刻,就会捕获到当前的 CNT 值,然后立即清零 CNT,并设置通道 x为下降沿捕获,这样到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值,记为 CCRx2。这样,根据定时器 阅读详情

相关推荐

AUTOSAR FEE 换页机制深度解析:从原理到实现逻辑

​​没有磨损均衡的EEPROM模拟,如同在沙地上建造城堡​​ ——AUTOSAR存储系统设计箴言

汽车电子软件领域知识分享 1338

LeetCode 力扣:15.3Sum + 16.3Sum Closest + 18.4Sum 排序 + 双指针遍历 题目+算法分析+Cpp解答

15.3Sum 排序 + 双指针遍历: ​ 首先,将给定的数组进行排序(从小到大的顺序)。 ​ 遍历排序后的数组中的每一个数,如果这个数之前已经讨论过了则可以跳过。 ​ 将取出的数作为“目标”,使用双指针在排序后的数组中找另外的两个数: ​ 一个左指针指向该取出的数的后一个数,即此时的最低位。 ​ 另一个右指针指向数组的最后一个数,即此时的最高位。 ​ 由于数组已经是从小到...

WULH 1177

OSMDroid 切换地图不更新的问题

用OSMDroid加载Google地图的时候 需要有按钮切换不同图层的地图,如果发现调用了mMapView.setTileSource(ITileSource aTileSource)方法的时候发现地图View没有更新的话,可能是因为两个实例化TileSource对象其子类BitmapTileSourceBase这个类的aName成员变量值一样导致的地图在setTileSource出现不更新问题,...

godoge的博客 1039

LeetCode——15.3Sum

首次使用LeetCode学习算法设计,希望通过本次学习可以提高自己对各种算法的了解。 本次选择的题目是15.3Sum,属于medium难度。该题目的描述是"Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triple

parishong的博客 314

QuickFix Java 讲解(一)概述、下载方法,和协议内容

本系列力求手把手教你怎样利用QuickFix Java 搭建自己的 FIX 协议收法平台,以及其中的注意事项。 所有源码的地址(免费): https://github.com/zongzhec/QuickFixPractise 1. 什么是FIX,QuickFix,Quick Java? 1.1. 什么是FIX 官网以及其他翻译自官网的帖子都太官方了,这里我们设想一个情景: 你是一个交易员,现在客户打电话来让你下个单买点股票。你啪啪啪的在你的机器上熟练地输入了下单指令。系统显示:成...

4573

别再手动配IP了!保姆级教程:用Cisco Packet Tracer搞定DHCP服务器配置(附实验抓包分析)

本文提供了一份详细的Cisco Packet Tracer DHCP服务器配置教程,帮助用户告别手动分配IP的繁琐过程。通过构建多子网实验环境,逐步指导DHCP地址池设置、客户端测试及协议分析,并分享常见问题排查技巧,让网络配置更高效、更智能。

weixin_42535461的博客 337

Leetcode15 3Sum(C++)

Leetcode15 3Sum(C++) 文章目录Leetcode15 3Sum(C++)题目论述思考分析code(c++) 题目论述 链接: Leetcode15 3Sum 概述: Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all ...

cbb944131226的博客 756

203.华为组网实例:VLAN间互通DHCP中继实验

SW核心交换机上配置DHCP中继。

迷逝 8432

Leetcode 15. 3Sum (python)

题目 解法1:hash table + sort triplets 这解法T了,应该是T在遍历之前储存的pair那边。不过我个人感觉这种做法比较直观 class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: pairs = collections.defaultdict(list) n = len(nums) ans = set()

qq_37821701的博客 549

读懂ARM汇编程序,你只差这篇!保姆级教程(附完整示例剖析)!

ARM汇编中的符号、标号、伪操作有哪些?C语言和汇编语言如何混合编程?GNU ARM汇编和ARM汇编的区别有哪些?

车载系统攻城狮 1万+

安装anaconda3时出现错误:Failed to link extracted packages to D:\anaconda!...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1479

Leetcode 15. 3Sum 三数之和

Leetcode 15. 3Sum 三数之和 标签(空格分隔): Leetcode 题目地址:https://leetcode-cn.com/problems/3sum/ 题目描述 给定一个包含 n 个整数的数组&nbsp;nums,判断&nbsp;nums&nbsp;中是否存在三个元素 a,b,c ,使得&nbsp;a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中...

CoderWangSon 196

亚马逊爬虫实战:中国商家信息(电话)爬取

import os), # 保存图片的路径# 搜索关键词"keywords":["毛巾","衣服"],"product_number": 1000000000000000, # 分页获取数量# 和url一一对应 个数要一样"remarks": ["备注1"],# 以下内容非专业人员请勿更改,请找开发人员更改. 对应的是amazon_product_url_setting文件中名称.},

youbingchen的博客 1524

leetcode记录15. 3Sum

leetcode记录15. 3Sum class Solution { public: vector&lt;vector&lt;int&gt;&gt; threeSum(vector&lt;int&gt;&amp; nums) { sort(nums.begin(), nums.end()); vector&lt;vector&lt;int...

我的博客 141

计算机控制技术及应用

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LeetCode 15. 3Sum

LeetCode 15. 3SumDescriptionExampleCodeConclusion Description Given an array numsof n integers, are there elements a, b, c in numssuch that a + b + c = 0? Find all unique triplets in the array which g...

gq__97的博客 205

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LeetCode-15. 3Sum [C++]

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.

贫道绝缘子的博客 443

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【每日一题】Leetcode - 15. 3Sum

Leetcode - 15. 3Sum

qq_43209531的博客 321

Leetcode 15. 3Sum (Array)

Leetcode 15. 3Sum (Medium) (java) Tag: Array, Two Pointers Difficulty: Medium Discription:Given an arraynumsofnintegers, are there elementsa,b,cinnumssuch thata+b+c= 0? Find a...

dengyao9100的博客 145

[leetcode]15. 3Sum

[leetcode]15. 3Sum Analysis 中秋节了,中午要去吃海底捞—— [嘻嘻~] 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 t...

weixin_32135877的博客 122

LeetCode 15: 3Sum题解(python)

Leetcode 42: Trapping Rain Water 分类:Two pointers 难度:M 描述:给了一个数组,问数组中存不存在a, b, c三个元素,使a + b + c = 0。把这些数组都找出来。 Given array nums = [-1, 0, 1, 2, -1, -4], A solution set is: [ [-1, 0, 1], [-1, -1, 2] ] 链接: 3Sum. 思路: 本题使用双指针法,遍历数组,然后每次遍历中使用前后指针搜索是否存在满足条件

Bourns_A的博客 362

LeetCode15. 3Sum

LeetCode15. 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 so

mohuak的博客 280

算法练习- LeetCode 15. 3Sum

算法练习- LeetCode 15. 3Sum

qq_41758969的博客 394

Leetcode 15. 3Sum

题目描述:找出任意三个数和为0的子集合,并列出出来,不可有重复。 题目链接:Leetcode 15. 3Sum 用递归的做法在31就超时了,一共313个case。 一般数组的题目要想加速 就要额外空间 hashmap做记忆或者两个指针的办法,一定要学会转化问题。 待定一个数 找这个数之后的数组所有不重复两个数相加和为此数的组合。 如果sum改成其他的数 只需要把求fix的步骤改一下就好了。 ...

Za七杂⑧ 196

[leetcode] 15. 3Sum

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 cont

CodePikachu的博客 364
上一篇: [LeetCode] 10. Regular Expression Matching
下一篇: [LeetCode] 16. 3Sum Closest
Peng_maple
博客等级 码龄10年 0粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值