当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。

三数之和

中等threeSum()
时间限制 2000 ms内存限制 128 MB复杂度要求 时间 O(n^2),空间 O(log n)

三数之和

给你一个整数数组 nums,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k,同时还满足 nums[i] + nums[j] + nums[k] == 0。

请你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

约定

  • 每个三元组内的数字按升序排列。
  • 三元组之间顺序任意。

输入

  • nums:整数数组,3 ≤ nums.length ≤ 3000,元素取值 -10^5 ~ 10^5

输出

所有和为 0 的不重复三元组组成的二维数组。

示例一

输入:

nums = [-1,0,1,2,-1,-4]

输出:

[[-1,-1,2],[-1,0,1]]

示例二

输入:

nums = [0,1,1]

输出:

[]

示例三

输入:

nums = [0,0,0]

输出:

[[0,0,0]]

复杂度要求

  • 时间复杂度:O(n^2)
  • 空间复杂度:O(log n)(排序栈)
Loading...

输入

[[-1,0,1,2,-1,-4]]

预期输出

[[-1,-1,2],[-1,0,1]]
自定义用例