首页 > 七牛云4.28两个AC编程题JAVA
头像
华工第一后羿
编辑于 2020-04-28 21:05
+ 关注

七牛云4.28两个AC编程题JAVA

本大菜鸡表示只会编程题其他题都不会

1、无向图判断是否连通,并查集
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt(),M = sc.nextInt(),num = N;
    int[] point = new int[N + 1];
    //每个点作为一个子集
    for (int i = 1; i <= N; i++) {
        point[i] = i;
    }
    for (int i = 0; i < M; i++) {
        int u = sc.nextInt(),v = sc.nextInt();
        int uF = point[u],vF = point[v];
        //向上查找根节点
        while (point[uF] != uF) {
            uF = point[uF];
        }
        while (point[vF] != vF) {
            vF = point[vF];
        }
        //属于不同子集的合并起来
        if (uF != vF) {
            int min = Math.min(uF, vF);
            point[uF + vF - min] = min;
            num--;
        }
    }
    System.out.println(num == 1?"YES":"NO");
    sc.close();
}

2、字符串消消乐,消除相邻相同字符
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int T = sc.nextInt();
    for (int i = 0; i < T; i++) {
        char[] cArr = sc.next().toCharArray();
        LinkedList<Character> list = new LinkedList<Character>();
        for(char c : cArr){
            list.add(c);
        }
        boolean flag = true;
        while (flag) {
            flag = false;
            for (int j = 0; j < list.size() - 1;) {
                if (list.get(j) == list.get(j + 1)) {
                    list.remove(j + 1);
                    list.remove(j);
                    flag = true;
                }else {
                    j++;
                }
            }
        }
        System.out.println(list.size() == 0?"Yes":"No");
    }
    sc.close();
}





全部评论

(4) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐