面试必考精华版Leetcode198. 打家劫舍

2023-12-20 14:24:50

题目:


代码(首刷自解):

class Solution {
public:
    int rob(vector<int>& nums) {
        int n=nums.size();
        if(n==1) return nums[0];
        else if(n==2) return max(nums[0],nums[1]);
        // 1.dp数组下标:到i所能得的最大金额
        vector<int> dp(n);
        // 2.初始化第0家和第1家偷的金额
        dp[0]=nums[0],dp[1]=max(nums[0],nums[1]);
        // 3.递推方向:左→右
        for(int i = 2;i < n; ++i){
            // 4.递推公式
            dp[i]=max(dp[i-2]+nums[i],dp[i-1]);
        }
        return max(dp[n-2],dp[n-1]);
    }
};

文章来源:https://blog.csdn.net/qq_52313711/article/details/135105469
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。