网站数据报表,超市建网站,兰州科技公司有哪些,杭州网站程序开发公司【问题描述】[中等]
给你一个包含 n 个整数的数组 nums#xff0c;判断 nums 中是否存在三个元素 a#xff0c;b#xff0c;c #xff0c;使得 a b c 0 #xff1f;请你找出所有满足条件且不重复的三元组。注意#xff1a;答案中不可以包含重复的三元组。
示例#…【问题描述】[中等]
给你一个包含 n 个整数的数组 nums判断 nums 中是否存在三个元素 abc 使得 a b c 0 请你找出所有满足条件且不重复的三元组。注意答案中不可以包含重复的三元组。
示例给定数组 nums [-1, 0, 1, 2, -1, -4]满足要求的三元组集合为
[[-1, 0, 1],[-1, -1, 2]
]
【解答思路】
排序双指针 时间复杂度O(N^2) 空间复杂度O(1)
class Solution {public ListListInteger threeSum(int[] nums) {Arrays.sort(nums);ListListInteger res new ArrayList();for(int k 0; k nums.length - 2; k){if(nums[k] 0) break;if(k 0 nums[k] nums[k - 1]) continue;int i k 1, j nums.length - 1;while(i j){int sum nums[k] nums[i] nums[j];if(sum 0){while(i j nums[i] nums[i]);} else if (sum 0) {while(i j nums[j] nums[--j]);} else {res.add(new ArrayListInteger(Arrays.asList(nums[k], nums[i], nums[j])));while(i j nums[i] nums[i]);while(i j nums[j] nums[--j]);}}}return res;}
}
【总结】
1. 审题 特殊条件进行优化
2.细节
List list Arrays.asList(“a”,“b”,“c”); 将数组转化成List集合的方法
转载链接https://leetcode-cn.com/problems/3sum/solution/3sumpai-xu-shuang-zhi-zhen-yi-dong-by-jyd/
参考链接https://blog.csdn.net/kzadmxz/article/details/80394351