zoukankan      html  css  js  c++  java
  • [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 };

      

     
     
     
     
  • 相关阅读:
    bin/sh^M: bad interpreter: No such file or directory解决
    1.2前置条件
    LINUXIPCS信息
    动态添加样式表规则第3版
    Google放出C++代码风格规范
    我的模块加载系统 v4
    有关婚姻的名言
    javascript 测试工具abut v3
    全世界最短的domReady
    javascript 模板系统 ejs v7
  • 原文地址:https://www.cnblogs.com/Liok3187/p/5296669.html
Copyright © 2011-2022 走看看