• LeetCode Javascript实现 258. Add Digits 104. Maximum Depth of Binary Tree 226. Invert Binary Tree


    258. Add Digits

    Digit root 数根问题

    /**
     * @param {number} num
     * @return {number}
     */
    var addDigits = function(num) {
        var b = (num-1) % 9 + 1 ;
        return b;
    };

    //之所以num要-1再+1;是因为特殊情况下:当num是9的倍数时,0+9的数字根和0的数字根不同。

     性质说明

     1.任何数加9的数字根还是它本身。(特殊情况num=0)

           小学学加法的时候我们都明白,一个数字加9,就是把十位加1,各位减1。因此十位加个位的和是不变的;如果有进位,即十位上是9,那么进位之后十位会变成0,百位会加1,道理和一个一位数加9是一样的。

     2.9乘任何数字的数字根都是9。

          同样是小学时学乘法时,我们在计算一位数乘九的时候,把十只手指头排开,乘几便弯下第几只手指头,前后的手指个数便是那个结果。它的数字根永远是10-1=9。多位数的化,拆分每一位数字即可。
     

    104. Maximum Depth of Binary Tree

    /**
     * Definition for a binary tree node.
     * function TreeNode(val) {
     *     this.val = val;
     *     this.left = this.right = null;
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {number}
     */
    var maxDepth = function(root) {
        if(root===null){
            return 0;
        }
        var le = maxDepth(root.left);
        var ri = maxDepth(root.right);
        
        return 1+Math.max(le,ri);
        
    };

     【注】custom test里面的binary tree visualizer使用数组产生二叉树,如[1,2,3,4,5]

          这题考察二叉树深度的计算,使用遍历完成,从底层return0不断+1到初始位置完成计算


    226. Invert Binary Tree

    题目描述里面的这句话笑了- -: Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

    /**
     * Definition for a binary tree node.
     * function TreeNode(val) {
     *     this.val = val;
     *     this.left = this.right = null;
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {TreeNode}
     */
    var invertTree = function(root) {
        if(root===null){
            return root
        }
        
        var tem = root.left;
        root.left = root.right;
        root.right = tem;
        invertTree(root.left);
        invertTree(root.right);
        
        return root
    };

    【注】这题和上面的二叉树深度的题有点像,一下就做出来了,没什么好说的 

  • 相关阅读:
    如何正确的学习?
    GitHub的使用
    freemarker
    Vue的前端路由
    推荐一个压缩图片好用的网站-tinyPNG
    纯CSS实现滚动彩虹色文字
    npm镜像源管理
    UI、UE和UX三者之间的区别?
    移动端rem布局的学习(基于一个网易云播放页面的思考)
    移动前端不得不了解的html5 head 头标签
  • 原文地址:https://www.cnblogs.com/cndotabestdota/p/5719237.html
Copyright © 2020-2023  润新知