金山云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

相关推荐

昨天 13:08
蚌埠坦克学院 C++
服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
1 6 评论
分享
牛客网
牛客企业服务