• [LeetCode][JavaScript]House Robber III


    House Robber III

    The thief has found himself a new place for his thievery again. There is only one entrance to this area, called the "root." Besides the root, each house has one and only one parent house. After a tour, the smart thief realized that "all houses in this place forms a binary tree". It will automatically contact the police if two directly-linked houses were broken into on the same night.

    Determine the maximum amount of money the thief can rob tonight without alerting the police.

    Example 1:

         3
        / 
       2   3
            
         3   1
    
    Maximum amount of money the thief can rob = 3 + 3 + 1 = 7.

    Example 2:

         3
        / 
       4   5
      /     
     1   3   1
    
    Maximum amount of money the thief can rob = 4 + 5 = 9.
     
     
     

     
     
     
    住宅相连构成一颗树,偷了相邻的两家就会触发警报。求不触发警报最多能偷到多少。
    把一个节点当前的val记做currVal,这个节点下面节点的最大值记做childVal。
    对于一个节点,如果偷了,那就不能偷他的左右孩子。
    如果不偷当前的节点,把左右子树的最大值相加。
     
     1 /**
     2  * Definition for a binary tree node.
     3  * function TreeNode(val) {
     4  *     this.val = val;
     5  *     this.left = this.right = null;
     6  * }
     7  */
     8 /**
     9  * @param {TreeNode} root
    10  * @return {number}
    11  */
    12 var rob = function(root) {
    13     if(!root || root.length === 0) return 0;
    14     var ret = getMax(root);
    15     return Math.max(ret.curr, ret.child);
    16 
    17     function getMax(node){
    18         var left = {curr: 0, child: 0};
    19         if(node.left !== null){
    20             left = getMax(node.left);
    21         }
    22         var right = {curr: 0, child: 0};
    23         if(node.right !== null){
    24             right = getMax(node.right);
    25         }
    26         return {
    27             curr: node.val + left.child + right.child,
    28             child: Math.max(left.curr, left.child)
    29                 + Math.max(right.curr, right.child)
    30         };
    31     }
    32 };

      

     
     
     
     
  • 相关阅读:
    Mac上的抓包工具Charles[转载]
    js 实现自动调出键盘
    Mac下git安装(使用Xcode)
    weinre远程调试
    Css Sprite Demo
    sublime 常用快捷键
    css 盒子模型 以及 box-sizing属性
    jquery中bind,live,delegate,on的区别
    模拟实现库函数的atoi、atof和itoa
    常见排序算法
  • 原文地址:https://www.cnblogs.com/Liok3187/p/5296669.html
Copyright © 2020-2023  润新知