leetcode-15 三数之和
题目描述
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
1
2
3
4[
[-1, 0, 1],
[-1, -1, 2]
]
解题说明
将数组进行排序,从左向右依次从小到大进行排序;
判断数组长度是否满足输入,如果长度小于等于2,则返回空数组;
定位找值,先固定一个数值,然后定义两个指针,进行左右移动进行目标值确定。如果三个数和等于0,则将三个数加入到结果数组中,在进行判重,如果左指针的值等于左指针加一的值,即相邻数相等,则左指针继续加一,判重条件为左指针小于右指针,退出循环。退出循环后,左右指针各加一,继续从中间向两边查找。如果计算结果大于0,则右指针左移,否则左指针右移。
代码实例
1 | package main |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Erebus's Blog!
评论