贷款类的网站好做怎么做,孝感房产网站建设,懒人建站,2345小游戏leetcode原地址#xff1a;https://leetcode.cn/problems/3sum/description
描述
给你一个整数数组 nums #xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k #xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请
你返回所有和…leetcode原地址https://leetcode.cn/problems/3sum/description
描述
给你一个整数数组 nums 判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k 同时还满足 nums[i] nums[j] nums[k] 0 。请
你返回所有和为 0 且不重复的三元组。
注意答案中不可以包含重复的三元组。
示例 1
输入nums [-1,0,1,2,-1,-4] 输出[[-1,-1,2],[-1,0,1]] 解释 nums[0] nums[1] nums[2] (-1) 0 1 0 。 nums[1] nums[2] nums[4] 0 1 (-1) 0 。 nums[0] nums[3] nums[4] (-1) 2 (-1) 0 。 不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。 注意输出的顺序和三元组的顺序并不重要。 示例 2
输入nums [0,1,1] 输出[] 解释唯一可能的三元组和不为 0 。 示例 3
输入nums [0,0,0] 输出[[0,0,0]] 解释唯一可能的三元组和为 0 。
提示
3 nums.length 3000 -105 nums[i] 105
题解
public ListListInteger threeSum(int[] nums) {ListListInteger result new ArrayList();Arrays.sort(nums);int length nums.length;int index -1;for (int i 0; i length; i) {if (index ! -1 nums[index] nums[i]) {continue;}int l i 1, r length - 1;while (l r) {int sum nums[i] nums[l] nums[r];if (sum 0) {result.add(Arrays.asList(nums[i], nums[l], nums[r]));int temp nums[l];while (l r temp nums[l]){l;} } else if (sum 0) {l;} else {r--;}}index i;}return result.stream().distinct().collect(Collectors.toList());}