本文共 1507 字,大约阅读时间需要 5 分钟。
以下是重新优化后的内容:
该问题可以看作是一个经典的 3Sum 子问题,但由于不能使用 HashMap 存储解,处理过程中需要特别注意避免重复和优化逻辑。
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Solution { public List
> threeSum(int[] nums) { List
> res = new ArrayList<>(); if (nums == null || nums.length == 0) { return res; } Arrays.sort(nums); for (int i = 0; i < nums.length - 2; i++) { if (i > 0 && nums[i] == nums[i-1]) { continue; } int j = i + 1; int k = nums.length - 1; while (j < k) { int sum = nums[i] + nums[j] + nums[k]; if (sum < 0) { j++; } else if (sum > 0) { k--; } else { res.add(Arrays.asList(nums[i], nums[j], nums[k])); j++; k--; } } } return res; }}
转载地址:http://uagyk.baihongyu.com/