微软100题,39题

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967

课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。

腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518

第二个视频发布  https://edu.csdn.net/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.csdn.net/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件
————————————————------------------------------------------------------------------------------------------------------------------

39.(树、图、算法)
网易有道笔试:
(1).
求一个二叉树中任意两个节点间的最大距离,
两个节点的距离的定义是 这两个节点间边的个数,
比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。

(2).
求一个有向连通图的割点,割点的定义是,如果除去此节点和与其相关的边,
有向图不再连通,描述算法。

 

 

import java.util.Random;

/**
 * <p>File:Test_39_1.java</p>
 * <p>Title: </p>
 * @version 1.0
 * 39.(树、图、算法)
网易有道笔试:
(1).
求一个二叉树中任意两个节点间的最大距离,
两个节点的距离的定义是 这两个节点间边的个数,
比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。

 */
public class Test_39_1
{
    private static Node root;
    
    private static class Node
    {
        private Node parent;

        private Node left;

        private Node right;
        
        private int depth;
        
        
        public Node(){}
        
        public Node(Node parent, Node left, Node right)
        {
            super();
            this.parent = parent;
            this.left = left;
            this.right = right;
        }

        public int getDepth()
        {
            return depth;
        }

        public void setDepth(int depth)
        {
            this.depth = depth;
        }

        public Node getParent()
        {
            return parent;
        }

        public void setParent(Node parent)
        {
            this.parent = parent;
        }

        public Node getLeft()
        {
            return left;
        }

        public void setLeft(Node left)
        {
            this.left = left;
        }

        public Node getRight()
        {
            return right;
        }

        public void setRight(Node right)
        {
            this.right = right;
        }
    }

    private static void buildBinaryTree()
    {
        Node left=new Node();
        Node right=new Node();
        root=new Node(null,left,right);
        root.setDepth(0);
        left.setParent(root);
        right.setParent(root);
        left.setDepth(1);
        right.setDepth(1);
        buildNode(left);
        buildNode(right);
    }
    
    private static void buildNode(Node node){
        if(node.depth>10){
            return;
        }
        Node left=new Node();
        Node right=new Node();
        left.setDepth(node.getDepth()+1);
        right.setDepth(node.getDepth()+1);
        left.setParent(node);
        right.setParent(node);
        node.setLeft(left);
        node.setRight(right);
        buildNode(node.getLeft());
        buildNode(node.getRight());
    }
    
    private static Node getRandomNode(){
        Random random=new Random();
        Node result=root;
        Random depthR=new Random();
        int d=depthR.nextInt(10);
        for(int i=0;i<d;i++){
            boolean lr=random.nextBoolean();
            if(lr){
                result=result.getLeft();
            }else{
                result=result.getRight();
            }
        }
        return result;
    }
    
    private static void printTree(){
        System.out.println("--0");
        printNode(root.getLeft());
        printNode(root.getRight());
        
    }
    
    private static void printNode(Node node){
        if(node==null){
            return;
        }
        String str="";
        for(int i=0;i<node.getDepth()*2;i++){
            str+="--";
        }
        System.out.println(str+node.depth);
        printNode(node.getLeft());
        printNode(node.getRight());
    }
    
    private static int computeDistance(Node a,Node b){
        if(a==b){
            return 0;
        }
        if(a.depth==b.depth&&a.parent==b.parent){
            return 2;
        }else if(a.depth==b.depth){
            return computeDistance(a.parent,b.parent)+2;  
        }else{
            if(a.depth>b.depth){
                return computeDistance(a.parent,b)+1;
            }else{
                return computeDistance(a,b.parent)+1;
            }
        }
    }
    
    /**
     * @param args
     */
    public static void main(String[] args)
    {
        buildBinaryTree();
        printTree();
        Node a=getRandomNode();
        Node b=getRandomNode();
        System.out.println("a.深度:"+a.getDepth()+","+"b的深度:"+b.getDepth()+",两节点的长度是:"+computeDistance(a,b));
    }
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值