• LeetCode 337. House Robber III 打家劫舍


    第一次用结构体代替dp数组,这个题没有标明树的深度,用数组存二叉树会爆内存。

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    struct dp{
        int v0,v1;
        dp *lf;
        dp *rt;
        dp() : v0(0),v1(0),lf(NULL),rt(NULL){}
    };
    
    class Solution {
    public:
        void dfs(TreeNode *p,dp *u){
            if(!p){
                return;
            }
            if(!p->left&&!p->right){
                u->v0=0;
                u->v1=p->val;
                return ;
            }
            u->lf=new dp(),u->rt=new dp();
            if(p->left){
                dfs(p->left,u->lf);
            }
            if(p->right){
                dfs(p->right,u->rt);
            }
            /*
            dp[1][u]=dp[0][L(u)]+dp[0][R(u)]+p->val;
            dp[0][u]=max(dp[0][L(u)],dp[1][L(u)])+max(dp[0][R(u)],dp[1][R(u)]);
            */
            u->v1=p->val+u->lf->v0+u->rt->v0;
            u->v0=max(u->lf->v0,u->lf->v1)+max(u->rt->v0,u->rt->v1);
        }
        int rob(TreeNode* root) {
            dp *ans=new dp();
            dfs(root,ans);
            return max(ans->v0,ans->v1);
        }
    };
    
  • 相关阅读:
    OpenCV 3.4.0 + Visual Studio 2015开发环境的配置(Windows 10 X64)
    数值分析4
    数值分析3
    数值分析2
    数值分析1
    绪论0.4
    绪论0.3
    绪论0.2
    绪论0.1
    GitHub之起势
  • 原文地址:https://www.cnblogs.com/chwhc/p/13439075.html
Copyright © 2020-2023  润新知