★[leetCode15] 三数之和(双指针法)
排序+双指针,一前一后遍历 复习了一下java中操作数组的方法,Arrays.sort(),List的两种实现,ArrayList和LinkedList
class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); List<List<Integer>> res =new ArrayList<>(); 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){ if(nums[i]+nums[j]+nums[k] > 0) k--; else if(nums[i]+nums[j]+nums[k] < 0) j++; else if(nums[i]+nums[j]+nums[k] == 0){ List<Integer> tem=new ArrayList<>(); tem.add(nums[i]); tem.add(nums[j]); tem.add(nums[k]); if(!res.contains(tem)) res.add(tem); k--; j++; } } } return res; } }
上一篇:
IDEA上Java项目控制台中文乱码