LeetCode 之 3sum

CentOS 7下Oracle 11G RAC静默安装避坑指南:从网络规划到共享存储配置全流程 本文详细介绍了在CentOS 7环境下进行Oracle 11G RAC静默安装的全流程,包括网络规划、共享存储配置和系统参数调优等关键步骤。特别针对静默安装过程中的常见问题提供了实用的避坑指南和优化建议,帮助技术人员高效完成企业级数据库部署。 阅读详情

题目链接: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]
]

这道题题意就是输出数组中三个数和为0的所有情况。
参考:https://www.cnblogs.com/springfor/p/3859670.html

注意重点:不能出现重复,所以如何处理重复是关键;

最直接简单的思路就是三重循环得出数组中3个数的所有组合情况,如果和为0则将其加入到List中,但是明显出现的问题有:1.时间复杂度为O(n^3),然后重复问题不太好解决(就是因为重复卡了半天)。

参考了其他人的思路,时间复杂度为O(n^2),解决思路:
1.首先将数组排序
2.从0—(len-3)遍历固定一个元素,在剩下的元素中使用两个指针分别从头尾进行扫面,运行2sum问题。
3.解决重复问题:(1)使用hashset
(2)因为是排序好了的,所以判断前后元素是否相同,如果相同则跳过

代码如下:

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        int len = nums.length;
        List<List<Integer>> re = new ArrayList<>();

        //处理特殊情况
        if(len<3)
            return re;

        //数组排序
        Arrays.sort(nums);
        int j = 0 , k = 0;

        for(int i = 0;i<len-2;i++){
            //当nums[i]!nums[i-1]时才进行2sum,用于去除重复
            if(i==0||nums[i]!=nums[i-1]){
                j = i+1;
                k = len-1;
                while(j<k){
                    if(nums[i]+nums[j]+nums[k]==0){
                        ArrayList<Integer> temp = new ArrayList<Integer>();
                        temp.add(nums[i]);
                        temp.add(nums[j]);
                        temp.add(nums[k]);
                        re.add(temp);
                        //同样用于去除重复
                        while(j<k && nums[j]==nums[j+1])
                            j++;
                        while(j<k && nums[k]==nums[k-1])
                            k--;

                        j++;
                        k--;
                     //因为是排序好的,所以当计算的和>0时,尾部指针移动;否则头部移动
                    }else if(nums[i]+nums[j]+nums[k]>0)
                        k--;
                    else
                        j++;
                }
            }
        }
        return re;
    }
}
车载以太网网络测试-27【SOME/IP-SD简述】 SOME/IP-SD协议是基于IP的可扩展面向服务中间件中的服务发现协议,是汽车电子和嵌入式系统中实现动态服务发现与通信的核心组件。该协议规范详细说明了协议SOME/IP服务发现(SOME/IP-SD)的格式、消息序列和语义。本文将对SOME/IP-SD协议进行详细介绍。 阅读详情

相关推荐

论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography

Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.

qq_25283239的博客 3395

“3Sum”类问题介绍

3Sum”类问题,属于已排序的“Two Sum”类问题的升级版,都是给定一个已排序(升序或降序)的整型数组,然后在该数组中寻找若干个值,这些值的总和等于给定的target值。

liitdar的博客 1467

VMware桥接模式实战:用手机热点给Linux虚拟机共享网络(附WiFi适配技巧)

本文详细介绍了在移动办公场景下,如何为VMware中的Linux虚拟机配置桥接模式,以通过手机热点共享网络。文章深入解析了桥接模式在无线环境下的工作原理,提供了从主机端准备、VMware设置到Linux虚拟机内部配置的完整实战步骤,并针对手机热点的特殊性,分享了MTU优化、DNS配置及常见网络问题的诊断与解决方案,帮助用户实现稳定高效的移动虚拟化办公。

2y3u4i5o6p的博客 1193

leetcode:15. 三数之和

题目来源 leetcode 题目描述 题目解析 题目分析 目的:要求从无序nums中找出3个数,正好和为0,要求求出所有的方案(不重复) 因为要求返回所有的方案,所以动态规划会比较麻烦,x掉。 暴力 从下面分析,可以知道,这是一个排列问题(跟顺序有关) 问题:我们需要从一个数组中选出三个数,有多少种组合?(每个nums[i]可以用无限次)(组合跟顺序没有关系) #include <iostream> #include <algorithm> #include <vec

OceanStar的博客 2686

龙腾CMS downloadFile接口任意文件读取漏洞复现 [附POC]

大连网龙网络科技有限公司专注于在信息科技领域中向客户提供商业解决方案,是专业的互联网服务解决方案提供商和网络营销服务专家,为用户提供一体化的网络营销整体解决方案,龙腾CMS downloadFile接口存在任意文件读取漏洞。

薛定谔嘚喵博客 720

Sparse-ICP—(4) 加权稀疏迭代最近点算法(matlab版)

本文介绍了加权稀疏迭代最近点算法的实现。

点云侠的博客 642

LeetCode—15.三数之和(3Sum)——分析及代码(C++)

LeetCode—15.三数之和[3Sum]——分析及代码[C++]一、题目二、分析及代码1. 双指针法(1)思路(2)代码(3)结果三、其他 一、题目 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0...

江南土豆的博客 481

抖音创作者必备工具!免费一键批量下载无水印视频 + 一键提取抖音视频文案

抖音创作者必备工具!免费一键批量下载无水印视频 + 一键提取抖音视频文案

XiaoqiangClub的博客 3361

leetcode题解—3Sum

题目描述 给定有n个整数的数组nums,其中是否存在元素a,b,c使得a+b+c=0?在nums中找到所有满足条件的不重复的三元组a,b,c。 如输入 nums=[-1, 0, 1, 2, -1, -4],输出为 [ [-1, 0, 1], [-1, -1, 2]]。 解题思路 方法1:Brute Force 暴力法的解题思路很简单,用三个变量i,j,k分别遍历nums,将满足nums[i] + ...

相逢、陌路 243

STM32N6570-DK识别STLINK问题,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 2208

7、初级视觉皮层(V1)的研究综述

本文综述了初级视觉皮层(V1)的基本功能特性、计算理解、细胞相互作用及理论模型。V1不仅执行方向和空间频率的选择性滤波,还通过相位选择性和上下文调制参与高级视觉处理。研究从信息编码角度解释了V1感受野的形成,并介绍了基于自然图像统计的建模方法。横向与反馈连接揭示了V1在全局视觉整合中的作用,尤其是上下文对细胞响应的快速调节。李的动态模型提出V1可生成视觉显著性图,支持前注意分割和注意力引导。未来研究聚焦于V1在注意力、意识和硬件实现中的潜在应用,推动视觉神经科学与人工智能的交叉发展。

7z8x2c4v6b9的博客 144

LeetCode 15: 三数之和(3Sum)

最直接的方法是使用三重循环,但时间复杂度为 O(n³),效率较低。通过排序和双指针技术,我们成功高效地解决了三数之和问题,找出了所有不重复的三元组。:首先对数组进行排序,这样相同的元素会相邻,便于去重。:对于所有指针,当遇到相同元素时,跳过以避免重复结果。根据三数之和与0的比较结果,决定如何移动指针。循环结束后跳过重复元素,避免产生重复结果。:遍历排序后的数组,固定第一个数。如果和小于0,左指针右移(增加和)如果和大于0,右指针左移(减小和)如果和为0,记录结果并移动双指针。:答案中不可包含重复的三元组。

printf___panda的博客 868

【YOLOv11】006、YOLOv11数据增强策略:Mosaic、MixUp等增强技术原理解析

摘要:YOLOv11在产线缺陷检测中遇到小尺寸瑕疵漏检问题,暴露了训练数据过于"干净"的缺陷。数据增强的核心是提升模型泛化能力,而非简单扩充数据。Mosaic增强通过多图拼接迫使模型处理多尺度目标,需注意边界框裁剪细节;MixUp通过线性插值使决策边界更平滑,但需避免类别冲突。自适应增强策略应随训练进度动态调整强度。实际应用中,需针对小目标、类别不平衡等场景调整增强参数,并确保验证与推理流程一致。数据增强应针对性解决具体问题,而非盲目尝试组合。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 365

【Leetcode】3Sum

题目链接:https://leetcode.com/problems/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

业精于勤,荒于嬉 2576

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode 3Sum

找出一个列表中所有和为零的三元组。要求求出的三元组中没有重复。

DRFish 2179

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode总结——从2Sum、3Sum、3Sum Closest、4Sum到kSum

leetcode求和问题描述(K sum problem): 给你一组N个数字(nums), 然后给你一个常数(target) ,我们的目标是在这一堆数里面找到K个数字,使得这K个数字的和等于target。 注意事项(constraints): 注意这一组数字可能有重复项:比如 1 1 2 3 , 求3sum, 然后 target = 6, 你搜的时候可能会得到 两组1 2 3, 1 2 3,1...

vivian_ll的博客 382

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[LeetCode 16] 3Sum Closet

Given an arraynumsofnintegers and an integertarget, find three integers innumssuch that the sum is closest totarget. Return the sum of the three integers. You may assume that each input would...

ExcitedZhang的博客 204

LeetCode 3sum

这是leetcode的3sum题目,一开始写的版本可以跑前面2/3的测试数据,后面1/3数据长度变大之后,原代码的时间复杂度没控制好,估计是O(n²),等待时间太长LeetCode那里直接就跳出了,后来想了差不多一周,反应过来,排序和搜索做的太多了,因为这个题目有两个地方很重要,第一个是: 遍历所有的组合选项(就是一个排列组合的问题,不能重复),符合3sum条件的结果也不能重复,所有还有一个去重的

westlife_28的博客 605

【LeetCode】15. 3Sum(Python)

Problem Algorithmic thinking 讨论解决方案 https://discuss.leetcode.com/topic/75883/python-solution-with-detailed-explanation 3Sum https://leetcode.com/problems/3sum/ 基于排序的算法 a + b = -c。3SUM减少到2SUM问题。 处理...

E.W的博客 1469

leetcode 2-sum,3-sum,k-sum总结

百度面试问到这个,之前虽然做过,但是面试还是表现的不好,所以写下来总结一下。 一:leetcode 1. Two Sum 数组中找两数之和等于0;要求时间复杂度和空间复杂度都是O(N) 使用哈希表来做! class Solution(object): def twoSum(self, nums, target): h = {} for i, num in e...

rainMan的博客 422

LeetCode 求和问题总结(2sum,3sum,ksum)

求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum) 前言: 做过leetcode的人都知道, 里面有2sum, 3sum(closest), 4sum等问题, 这些也是面试里面经典的问题, 考察是否能够合理利用排序这个性质, 一步一步得到高效的算法. 经过总结, 本人觉得这些问题都可以使用一个通用的K sum求和问题加以概括消化, 这里我们先直接给出K

chenlong226的专栏 4483

LeetCode - 15. 3Sum

方法一: 这一道题目直接的想法就是Brute Force,通过三重循环来寻找目标,但是这样的时间复杂度非常高,同时又需要检测来避免重复,所以这种方法虽然能够得到正确的答案,但是在leetcode上会因为time limit exceeded而无法通过 public class Solution { public List> threeSum(int[] nums) {

找不到工作了... 2920

LeetCode 15. 3Sum

LeetCode 15. 3Sum题目要求:给出一个整型数组S。找出里面所有的a,b,c使得a+b+c=0,要求每组数据不能完全相同。 题目给出的框架如下:class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { } };解题思路3Sum与2Sum的思路是一致的,都是先进行排序,然后采用首尾两

DanielRichard的博客 409

Leetcode 2SUM-3SUM-4SUM

之前刷过Leetcode 一些题,现在有时间整理一下!2Sum 题意大概如下: Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly o

zhumingyuan111的博客 454

【Leetcode】3Sum Closest

题目链接:https://leetcode.com/problems/3sum-closest/ 题目: Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three

业精于勤,荒于嬉 2028

3Sum -- LeetCode

原题链接: http://oj.leetcode.com/problems/3sum-closest/  这道题是Two Sum的扩展,brute force时间复杂度为O(n^3), 对每三个数进行比较。这道题和Two Sum有所不同,使用哈希表的解法并不是很方便,因为结果数组中元素可能重复,如果不排序对于重复的处理将会比较麻烦,因此这道题一般使用排序之后夹逼的方法,总的时间复杂度为O

Code Ganker 2万+
上一篇: 排序算法总结(五)——非比较排序
下一篇: LeetCode 之 3Sum Closest
小菜鸟要高飞
博客等级 码龄12年 14粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值