牛客网编程巅峰挑战赛青铜白银黄金组第3场赛后复盘

牛牛打怪

https://ac.nowcoder.com/acm/contest/9246/A

牛客网编程巅峰挑战赛青铜白银黄金组第3场

哎,就只会做一题,我好菜啊!
第一题:

public class Solution {
    public int Minimumdays (int n, int[] DEF) {
        // write code here
        Arrays.sort(DEF);
        int currDay = 0;
        for(int i = 0; i < n; ++i){
            if(currDay >= DEF[i]){
                currDay++;
            }else{
                currDay = DEF[i] + 1;
            }
        }
        return currDay - 1;
    }
}

第二题:快速幂

public class Solution {
    /**
     * 返回c[n]%1000000007的值
     * @param n long长整型 即题目中的n
     * @return int整型
     */
    public int Answerforcn (long n) {
        // write code here
        // return 14 * pow(15, n)
        long MOD = 1000000007L;
        long x = 14L;
        long y = 15L;
        long res = 1;
        --n;
        while(n > 0){
            if((n & 1) == 1){
                res = (res * y ) % MOD; 
            }
            y = y * y % MOD;
            n >>= 1;
        }
        return (int)((14 * res) % MOD);
    }
}

第三题: 先BFS构建树结构,再DFS赋值并计算每个节点与其父节点的异或和,但是使用节点对象重建树结构会超内存!

import java.util.*;

public class Solution {

    private class TreeNode{
        public int val;
        public TreeNode[] children;
        public TreeNode(int k, int v){
            val = v;
            children = new TreeNode[k];
        }
    }

    private TreeNode bfs(int k, int[] a){
        // create tree;
        if(a == null){return null;}
        int len = a.length;
        TreeNode[] nodes = new TreeNode[len];
        for(int i = 0; i < a.length; ++i){
            nodes[i] = new TreeNode(k, -1);
        }
        for(int i = 0; i < len; ++i){
            for(int j = 0; j < k; ++j){
                if(i * k + j + 1 < len){
                    nodes[i].children[j] = nodes[i * k + j + 1];
                }else{
                    break;
                }
            }
        }
        return nodes[0];
    }

    private void dfs(TreeNode root, int[] a, int[] count, long[] res, int fv){
        if(root == null || count[0] >= a.length){return;}
        root.val = a[count[0]++];
        res[0] += (root.val ^ fv);
        for(TreeNode child: root.children){
            if(child != null){
                dfs(child, a, count, res, root.val);
            }
        }
    }

    /**
     * 
     * @param k int整型 表示完全k叉树的叉数k
     * @param a int整型一维数组 表示这棵完全k叉树的Dfs遍历序列的结点编号
     * @return long长整型
     */
    public long tree6 (int k, int[] a) {
        if(a == null || a.length == 0){return 0;}
        // write code here
        int[] count = {0};
        long[] res = {0L};
        TreeNode root = bfs(k, a);
        dfs(root, a, count, res, a[0]);
        return res[0];
    }
/*
    不通过
    您的代码已保存
    请检查是否存在数组越界等非法访问情况
    case通过率为80.00%
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at Solution$TreeNode.<init>(Solution.java:11)
    at Solution.bfs(Solution.java:21)
    at Solution.tree6(Solution.java:57)
    at Main.main(Main.java:27)
*/
}
全部评论
奥利库
1 回复 分享
发布于 2020-11-25 10:38

相关推荐

昨天 11:26
清华大学 Java
打开电脑,思绪又回到了7月份刚开始的时候,感觉这个月过的如梦如幻,发生了太多事,也算是丰富了我本就是平淡的人生吧太早独立的我习惯了一切都是自己做决定,拥有绝对的决定权,而且永远不会听取别人的建议。我就是那个恋爱四年出轨的男主啦,感觉既然在牛客开了这个头,那我就要做个有始有终的人。从我出轨到结束再到和女朋友和好如初真的太像一场梦了,短短的一个月我经历了太多,也成长了很多,放下了那些本就不属于我的,找回了那些我不该放弃的。我的人生丰富且多彩,但人不能一直顺,上天总会让你的生活中出点乱子,有好有坏,让你学会一些东西,让你有成长。我和女朋友的恋爱四年太过于平淡,日常除了会制造一些小浪漫之外,我们的生活...
段哥亡命职场:不得不说,我是理解你的,你能发出来足见你是个坦诚的人,至少敢于直面自己的内心和过往的过错。 这个世界没有想象中那样非黑即白,无论是农村还是城市,在看不见的阴影里,多的是这样的事。 更多的人选择站在制高点去谩骂,一方面是社会的道德是需要制高点的,另一方面,很多人不经他人苦,却劝他人善。 大部分的我们,连自己生命的意义尚且不能明晰,道德、法律、困境,众多因果交织,人会迷失在其中,只有真的走出来之后才能看明白,可是没走出来的时候呢?谁又能保证自己能走的好,走的对呢? 可是这种问题有些人是遇不到的,不去追寻,不去探寻,也就没了这些烦恼,我总说人生的意义在过程里,没了目标也就没了过程。 限于篇幅,没法完全言明,总之,这世界是个巨大的草台班子,没什么过不去了,勇敢面对,革故鼎新才是正确,祝你早日走出来。查看图片
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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