搜狐第一题AC JAVA版

难得AC  发个代码
//主要思路是记录每个数重复的次数,以及下一个将重复的数是数组中的哪个元素
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            int[] a = new int[m];
            for (int i = 0; i < m; i++) {
                a[i] = sc.nextInt();
            }
            int[] res = new int[n];
            res[0] = a[0];
//这里要判断下第一个数是否为1,如果第一个数是1,需要初始化第二个数,否则后面循环走不下去,而第二个数与第一个数不相等,即不再为1,后面循环就顺利了
            if (a[0] == 1) {
                res[1] = a[1];
            }
            int cur = 0;
            int flag = 0;
            for (int i = 0; i < n;) {
//num表示重复的次数
                int num = res[cur];
                for (int j = 0; j < num; j++) {
//a[flag]表示正在重复的元素,在每次重复的结尾,将flag指向下一个元素
                    res[i] = a[flag];
                    if (j == num - 1) {
                        if (flag < m - 1) {
                            flag++;
                        } else if (flag == m - 1) {
                            flag = 0;
                        }
                    }
                    i++;
                    if (i == n) {
                        break;
                    }
                }
                cur++;
            }
            for (int i = 0; i < n; i++) {
                System.out.println(res[i]);
            }
        }
        sc.close();
    }
全部评论
求第二题代码
点赞 回复 分享
发布于 2017-08-28 21:15
很强 然而我什么都没看懂
点赞 回复 分享
发布于 2017-08-28 20:45
大佬说下思路
点赞 回复 分享
发布于 2017-08-28 20:33

相关推荐

我只是一个小白菜:我还用不惯m4,也是山猪吃不了细糠了
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
10
分享

创作者周榜

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