2022-4-29 双指针


15. 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

 1 class Solution {
 2     public List> threeSum(int[] nums) {
 3         List> list=new ArrayList<>();
 4         Arrays.sort(nums);
 5         int index=0,n=nums.length;
 6         while (index<n){
 7             int target=-nums[index];
 8             int l=index+1,r=n-1;
 9             while (l<r){
10                 int sum=nums[l]+nums[r];
11                 int left=nums[l],right=nums[r];
12                 if (sum<target){
13                     while (l;
14                 }else if (sum>target){
15                     while (l;
16                 }else{
17                     list.add(List.of(-target,left,right));
18                     while (l;
19                     while (l;
20                 }
21             }
22             while (index;
23         }
24         return list;
25     }
26 }

思路:2sum的基础上,穷举第一个数字。

相关