金山云Java方向9.16笔试

第一题:用long也越界了好像,n也太大了。过了91%。
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while (in.hasNext())
        {
            int n=in.nextInt();
            if(n<0)
            {
                System.out.println(0);
                continue;
            }
            long[] nums=new long[n];
            long pre=0;
            nums[0]=1;
            for(int i=1;i<n;i++)
            {
                nums[i]=nums[i-1]+pre;
                pre=nums[i-1];
            }
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<=i;j++)
                {
                    System.out.print(nums[j]+" ");
                }
                for(int k=i-1;k>=0;k--)
                {
                    System.out.print(nums[k]+" ");
                }
                System.out.println();
            }
        }
    }
}
第二题:反序列化二叉树+最近公共祖先。两道原题的结合版。AC
public class Main {
    static class TreeNode{
        public int val;
        public TreeNode left;
        public TreeNode right;
        public TreeNode(int val)
        {
            this.val=val;
        }
    }

    static TreeNode p=new TreeNode(-1);
    static TreeNode q=new TreeNode(-1);
    static int pVal;
    static int qVal;
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while (in.hasNextLine())
        {
            String id=in.nextLine();
            if(id==null || id.equals(""))
            {
                System.out.println(-1);
                continue;
            }
            String[] ids = id.split(" ");
            LinkedList<Integer> queue=new LinkedList<>();
            for(int i=0;i<ids.length;i++)
            {
                queue.offer(Integer.valueOf(ids[i]));
            }
            String virus=in.nextLine();
            String[] viruses = virus.split(" ");
            pVal=Integer.valueOf(viruses[0]);
            qVal=Integer.valueOf(viruses[1]);
            TreeNode root=bulidTree(queue);
            TreeNode res=getRes(root);
            if(res==null)
            {
                System.out.println(-1);
            }else
            {
                System.out.println(res.val);
            }
        }
    }

    private static TreeNode getRes(TreeNode root) {
        if(root==null || root==p || root==q) return root;
        TreeNode left=getRes(root.left);
        TreeNode right=getRes(root.right);

        if(left==null) return  right;
        if(right==null) return left;
        return root;
    }

    private static TreeNode bulidTree(LinkedList<Integer> queue) {
        int val=queue.poll();
        if(val==-1)
        {
            return null;
        }
        TreeNode root=new TreeNode(val);
        if(pVal==root.val)
        {
            p=root;
        }
        if(qVal==root.val)
        {
            q=root;
        }
        root.left=bulidTree(queue);
        root.right=bulidTree(queue);
        return root;
    }
}










#金山云##笔试题目#
全部评论
第一题怎么搞都是91%泪目,第二题不想建树,想了好久想不出来,只有去建树,写不完了,难受
点赞 回复 分享
发布于 2020-09-16 21:17
小于0不输出就行了
点赞 回复 分享
发布于 2020-09-16 21:18
n小于1,不输出,可以AC
点赞 回复 分享
发布于 2020-09-17 10:17
测开只对了一道,又凉了么😫
点赞 回复 分享
发布于 2020-09-17 13:04
``` public class Main {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int n = scanner.nextInt();         for (int i = 1; i <= n; i++) {             int m=0,k=1,t=0;             Stack stack = new Stack();             System.out.printf(k+" ");             stack.push(k);             for (int j = 2; j <= i; j++) {                 if(j != i){                     stack.push(m+k);                 }                 System.out.printf(m+k+" ");                 t=m;                 m=k;                 k=t+k;             }             for (int j = i+1; j <= (2*i-1); j++) {                 System.out.printf(stack.pop()+ " ");             }             System.out.println("");         }         scanner.close();     } } ```
点赞 回复 分享
发布于 2020-09-17 16:12

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
1 6 评论
分享
牛客网
牛客企业服务