目录
一、题目
1、题目描述
2、基础框架
3、原题链接
二、解题报告
1、思路分析
2、时间复杂度
3、代码详解
三、本题小知识
一、题目
1、题目描述
2、基础框架
给你一个包含 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[i] <= 105
Java 版本给出的基础框架代码如下:
class Solution {
public List> threeSum(int[] nums) {
}
3、原题链接
LeetCode 15. 三数之和
二、解题报告1、思路分析
先排序,三数之和有三种情况,大于0,小于0,等于0,
等于0,则添加到我们的集合中,
小于0,则增大和,再和0比较
大于0,则减小和,再和0比较
2、时间复杂度
缺,后补!!!!!!!!!!!
3、代码详解
class Solution {
public List> threeSum(int[] nums) {
//排序数组
Arrays.sort(nums);
int n = nums.length;
//存储结果的集合
List>res = new ArrayList<>();
int sum = 0;
//遍历枚举
for(int i=0;ilist = new ArrayList<>();
list.add(nums[i]);
list.add(nums[left]]);
list.add(nums[right]);
//检差res中是否存在list,不存在则添加
if(!res.contains(list)){
res.add(list);
}
//指针偏移
left++;
right--;
//若和大于0,则把right左移
}else if(sum>0){
right--;
//和小于0,则把left右移
}else{
left++;
}
}
}
return res;
}
}
三、本题小知识
三数之和,枚举;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)