15. 三数之和

手机软件开发 2024-9-22 05:04:57 91 0 来自 中国
1.标题

给你一个包罗 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出全部和为 0 且不重复的三元组。
注意:答案中不可以包罗重复的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
示例 2:
输入:nums = []
输出:[]
示例 3:
输入:nums = [0]
输出:[]
提示:
0 <= nums.length <= 3000
-105 <= nums <= 105
2.解题思绪


  • 方法一:排序 + 双指针
    标签:数组遍历
    起首对数组举行排序,排序后固定一个数nums[i,再利用左右指针指向numsi背面的两端,数字分
    别为nms[L]和nums[R],盘算三个数的和sum判断是否满意为O,满意则添加进结果集
    假如nums[i大于0,则三数之和一定无法即是0,竣事循环
    假如nums[i=nums[i-1],则阐明该数字重复,会导致结果重复,以是应该跳过
    当sum=0时,nums[L]==numsL+1]则会导致结果重复,应该跳过,L++
    当sum=0时,numsR=nums[R-1]则会导致结果重复,应该跳过,R--
    时间复杂度:O(n2),n为数组长度
3.代码
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 10:26, Processed in 0.164006 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表