题解 | #三数之和#

三数之和

https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711

运行时间:24ms超过95.60% 用Java提交的代码
import java.util.*;
public class Solution {
    public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        // 数组排序
        Arrays.sort(num);
        int len = num.length;
        // 固定第一位数,剩下的两位数使用双指针
        for(int i = 0; i < len - 2; i++){
            int left = i + 1, right = len - 1;
            // 去重
            if(i > 0 && num[i] == num[i - 1]){
                continue;
            }
            while(left < right){
                 if(num[i] + num[left] + num[right] == 0){
                     ArrayList<Integer> path = new ArrayList<>();
                     path.add(num[i]);
                     path.add(num[left]);
                     path.add(num[right]);
                     // 符合条件的数组添加到返回的列表中
                     res.add(path);
                     left++;
                     right--;
                     // 去重 注意使用while循环,重复的数组可能不止一个
                     while(left < right && num[left] == num[left - 1]){
                         left++;
                     }
                     // 去重
                     while(left < right && num[right] == num[right + 1]){
                         right--;
                     }
                 }else if(num[i] + num[left] + num[right] > 0){
                     right--;
                     // 去重
                     while(left < right && num[right] == num[right + 1]){
                         right--;
                     }
                 }else{
                     left++;
                     // 去重
                     while(left < right && num[left] == num[left - 1]){
                         left++;
                     }
                 }
            }
        }
        return res;
    }
}


全部评论

相关推荐

牛客84809583...:举报了
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务