题源:
15.三数之和
这题一开始没做出来,首先用两数之和的暴力循环肯定是做不出来的,后来还是看的题解才总结出来思路。
下面以nums = [-1,0,1,2,-1,-4]为例说一下我的思路并附上代码详解
package com.algorithm.array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//LeetCode15:三数之和
public class ThreeSum {
public List> threeSum(int[] nums) {
List> list=new ArrayList<>();
int len=nums.length;
//不满足条件直接返回
if(nums==null || len<3) return list;
//先对数组进行排序
Arrays.sort(nums);
//遍历数组中找负数
for(int i=0;i0) break;
//如果前后两个数相等继续下一次循环
if(i>0 && nums[i]==nums[i-1]) continue;
//定义左指针和右指针
int left=i+1;
int right=len-1;
while(left0) {
//大小0需要将right左移
right--;
}else {
//小于0需要将left右移
left++;
}
}
}
return list;
}
}



