题解 | #数据分类处理#

数据分类处理

https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //获取I数据
        int nI = in.nextInt();
        int first = in.nextInt();
        String[] arrI = in.nextLine().split(" ");
        arrI[0] = String.valueOf(first);
       // System.out.println(Arrays.toString(arrI));

        //获取R数据
        int nR = in.nextInt();
        int[] arrR = new int[nR];
        int i = 0;
        while (in.hasNextInt()) {
            arrR[i] = in.nextInt();
            i++;
        }
        //排序
        Arrays.sort(arrR);
        //去重
        int slow = 0;
        for (int fast = 1; fast < nR; fast++) {
            while (fast < nR  && arrR[fast] == arrR[slow]) {
                fast++;
            }
            if (fast < nR) {
                slow++;
                arrR[slow] = arrR[fast];
            }
        }

        //去重后长度为slow + 1
        //设置二维数组,记录满足条件的i的index
        int[][] result = new int[slow + 1][nI + 1];
        for (int j = 0; j <= slow; j++) {
            int count = 0;
            for (int k = 0; k < nI; k++) {
                if (arrI[k].contains(String.valueOf(arrR[j]))) {
                    result[j][k] = 1;
                    count++;
                }
            }
            result[j][nI] = count;
        }
      
        //总共有多少个数
        int sum = 0;
        for (int j = 0; j <= slow; j++) {
            if (result[j][nI] > 0) {
                sum += result[j][nI] * 2 + 2;
            }
        }

        //输出结果
        System.out.print(sum + " ");
        for (int j = 0; j <= slow; j++) {
            if (result[j][nI] > 0) {
                System.out.print(arrR[j] + " ");
                System.out.print(result[j][nI] + " ");
                //循环输出index和对应值
                for (int k = 0; k < nI; k++) {
                    if (result[j][k] == 1) {
                        System.out.print(k + " " + arrI[k] + " ");
                    }
                }
            }
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-23 17:32
那如果是字节外包呢?据我所知工牌无区别&nbsp;可以晒出去装X的那种
秋盈丶:残酷的是,都一样,管你是不是字节,不过我是很反对这种的,本是同根生,市场行情决定了用工的模式会有很多外包,分层只是单纯为了筛选
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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