网站备案密码找回,wordpress文章点赞,个人做网站名称怎么选择,wordpress文章id不连续给你一个整数数组 nums #xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k #xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请
你返回所有和为 0 且不重复的三元组。
注意#xff1a;答案中不可以包含重复的三元组。
这题真…给你一个整数数组 nums 判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k 同时还满足 nums[i] nums[j] nums[k] 0 。请
你返回所有和为 0 且不重复的三元组。
注意答案中不可以包含重复的三元组。
这题真的好难试了好多方法最后参考了代码随想录的解法
class Solution {public ListListInteger threeSum(int[] nums) {ListListInteger res new ArrayList();if(nums.length3) return res;// 排序方便操作Arrays.sort(nums);for(int i0;inums.length-2;i){// 剪枝已经排过序了所以如果第一个值大于0没有可行解if(nums[i]0) return res;// 剪枝如果当前元素和前一个元素一样跳过即可否则会有重复解if((i0) (nums[i-1]nums[i])) continue;int left i1;int right nums.length-1;while(left right){// int sum nums[i]nums[left]nums[right];if(nums[i]nums[left]nums[right] 0){res.add(Arrays.asList(nums[i], nums[left], nums[right]));while(leftright nums[left]nums[left1]) //去重left;while(leftright nums[right]nums[right-1]) //去重right--;left;right--;}else if(nums[i]nums[left]nums[right] 0)left;else if(nums[i]nums[left]nums[right] 0)right--;}}return res;}
}