8.16 19点阿里笔试

第一题:简单的字符串分割,相信大家都a了
第二题:主要思想并查集,代码如下:
import java.util.*;

public class Main {
    static int[] parent;
    static int[] size;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        parent = new int[n];
        size = new int[n];
        for (int i = 0; i < n; i++) {
            parent[i] = i;
            size[i] = sc.nextInt();
        }
        while (m-- > 0){
            int t = sc.nextInt();
            int x = sc.nextInt()-1;
            int y = sc.nextInt()-1;
            if(t == 1){
                if(!isConnected(x,y)){
                    System.out.println((find(x)+find(y)+2)^Math.abs(size[find(x)]-size[find(y)]));
                    union(x,y);
                }
            }else {
                if(isConnected(x,y))
                    System.out.println("YES");
                else
                    System.out.println("NO");
            }
        }
    }

    public static int find(int p){
        while (p != parent[p]){
            parent[p] = parent[parent[p]];
            p = parent[p];
        }
        return p;
    }

    public static boolean isConnected(int p,int q){
        return find(p) == find(q);
    }

    public static void union(int p,int q){
        int pRoot = find(p);
        int qRoot = find(q);
        if(pRoot == qRoot)
            return;

        if(pRoot < qRoot){
            parent[qRoot] = pRoot;
            size[pRoot] += size[qRoot];
        }else {
            parent[pRoot] = qRoot;
            size[qRoot] += size[pRoot];
        }
    }
}


#阿里笔试##笔经##阿里巴巴#
全部评论
大佬有题目吗
点赞 回复 分享
发布于 2021-08-17 13:45
祝楼主好运,也在这里打个广告,虾皮校园大使内推码:DSWj15Rz  可私聊我进群,我会分享笔经面经和之前整理的其他人的笔面经
点赞 回复 分享
发布于 2021-08-24 15:16

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
10-15 03:05
门头沟学院 Java
CADILLAC_:凯文:我的邮箱是死了吗?
点赞 评论 收藏
分享
评论
点赞
3
分享
牛客网
牛客企业服务