• 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,
    */

    拓展学习

    官方题解中用哈希表存储

  • 相关阅读:
    Mac 生成public_key
    OmniGraffler软件和激活码
    Maven将本地项目打包后引入本地另一个项目
    spring boot 项目启动无法访问,排查
    服务端推送
    使用IDEA进行commit合并(折叠)
    将map转为Object,支持 Date/Boolean
    mysql 删除同样记录只保留一条
    Springboot文件上传限制
    Springboot 上传文件
  • 原文地址:https://www.cnblogs.com/BoysCryToo/p/13438936.html
Copyright © 2020-2023  润新知