中金所
第三题 三数之和 唉正则忘记了,暴力split出来的 但是时间不够了没交上去我真服了
package gongchuang; import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); String[] s1 = s.split("="); String[] s2 = s1[1].split("\\["); String[] s3 = s2[1].split("\\]"); String[] number = s3[0].split(","); int[] n = new int[number.length]; for (int i = 0; i < number.length; i++) { n[i] = Integer.valueOf(number[i]); } List<List<Integer>> result = threeSum(n); for (List<Integer> l1 : result) { System.out.println(l1); } } public static List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList<>(); Arrays.sort(nums); for (int i = 0; i < nums.length; i++) { if (nums[i] > 0) { return result; } if (i > 0 && nums[i] == nums[i - 1]) { continue; } int left = i + 1; int right = nums.length - 1; while (left < right) { int sum = nums[i] + nums[left] + nums[right]; if (sum > 0) { right--; } else if (sum < 0) { left++; } else { result.add(Arrays.asList(nums[i], nums[left], nums[right])); while (left < right && nums[right] == nums[right - 1]) { right--; } while (left < right && nums[left] == nums[left + 1]) { left++; } right--; left++; } } } return result; } }