Leetcode每日一题_15
public static List<List<Integer>> threeSum(int[] nums) {
//o(n*n) o(n)
List<List<Integer>> res=new ArrayList<>();
Arrays.sort(nums);
for (int i = 0; i < nums.length-2; i++) {
if(i>0&&nums[i]==nums[i-1]) continue;
int low=i+1,high=nums.length-1,sum=0-nums[i];
while (low<high) {
if (nums[low]+nums[high]==sum) {
res.add(Arrays.asList(nums[i],nums[low],nums[high]));
while(low<high&&nums[low]==nums[low+1]) low++;
while(low<high&&nums[high]==nums[high-1]) high--;
low++;
high--;
}
else if (nums[low]+nums[high]<sum) {
low++;
}
else {
high--;
}
}
}
return res;
}
public static List<List<Integer>> threeSum(int[] nums) {
//o(n*n) o(n)
List<List<Integer>> res=new ArrayList<>();
Arrays.sort(nums);
for (int i = 0; i < nums.length-2; i++) {
if(i>0&&nums[i]==nums[i-1]) continue;
int low=i+1,high=nums.length-1,sum=0-nums[i];
while (low<high) {
if (nums[low]+nums[high]==sum) {
res.add(Arrays.asList(nums[i],nums[low],nums[high]));
while(low<high&&nums[low]==nums[low+1]) low++;
while(low<high&&nums[high]==nums[high-1]) high--;
low++;
high--;
}
else if (nums[low]+nums[high]<sum) {
low++;
}
else {
high--;
}
}
}
return res;
}
全部评论
相关推荐

点赞 评论 收藏
分享