zoukankan      html  css  js  c++  java
  • 337. 打家劫舍 III

    题目

    337. 打家劫舍 III

    我的思路

    比较明显的动态规划
    后序遍历:
        当前节点作为根节点的最大和 = 左子树
        maxSum(root) = max{maxSum(root.left)+maxSum(root.left),root.val+maxSum(root.left.left)...}

        使用递归?空间复杂度3logn,时间复杂度n

    我的实现

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<int> PostSearchRob(TreeNode *root)
        {
            if(root==NULL)
            {
                //vector<int> zeros(3,0);
                return  vector<int>(3,0);
            }
            vector<int> leftVals = PostSearchRob(root->left);
            vector<int> rightVals = PostSearchRob(root->right);
            vector<int> myVals(3);
            myVals[1] = leftVals[0];
            myVals[2] = rightVals[0];
            myVals[0] = max(myVals[1]+myVals[2],root->val+leftVals[1]+leftVals[2]+rightVals[1]+rightVals[2]);
            return myVals;
        }
        int rob(TreeNode* root) {
            vector<int> robResults = PostSearchRob(root);
            return max(robResults[0],robResults[1]+robResults[2]);
    
        }
    };
    /*
    比较明显的动态规划
    后序遍历:
        当前节点作为根节点的最大和 = 左子树
        maxSum(root) = max{maxSum(root.left)+maxSum(root.left),root.val+maxSum(root.left.left)...}
    
        使用递归?空间复杂度3logn,
    */

    拓展学习

    官方题解中用哈希表存储

  • 相关阅读:
    MTK 官方 openwrt SDK 使用
    PF_RING packet overwrites
    pycares cffi
    libevent evbuffer bug
    浮点转字符串性能比较
    重写 libev 的 EV_WIN32_HANDLE_TO_FD
    thrift TNonblockingServer 使用
    accel-pptp 部署
    boost::asio 使用 libcurl
    蜂鸟A20开发板刷 cubietruck 的 SD 卡固件
  • 原文地址:https://www.cnblogs.com/BoysCryToo/p/13438936.html
Copyright © 2011-2022 走看看