LeetCode 198—— 打家劫舍

1. 题目

2. 解题思路

此题使用动态规划求解,假设 d p [ i ] [ 0 ] dp[i][0] dp[i][0] 代表不偷窃第 i i i 个房屋可以获得的最高金额,而 d p [ i ] [ 1 ] dp[i][1] dp[i][1] 代表偷窃第 i i i 个房屋可以获得的最高金额。那么转移方程为:

d p [ i + 1 ] [ 0 ] = m a x ( d p [ i ] [ 0 ] , d p [ i ] [ 1 ] ) dp[i+1][0] = max(dp[i][0], dp[i][1]) dp[i+1][0]=max(dp[i][0],dp[i][1])

不偷窃第 i + 1 i+1 i+1 个房屋时, i i i 个房屋可以偷也可以不偷,所以取二者的最大值。

d p [ i + 1 ] [ 1 ] = d p [ i ] [ 0 ] + n u m s [ i + 1 ] dp[i+1][1] = dp[i][0] + nums[i+1] dp[i+1][1]=dp[i][0]+nums[i+1]

要偷窃第 i + 1 i+1 i+1 个房屋的话, i i i 个房屋一定不可以偷,所以取前一个房间不偷窃可以获得的最大金额再加上当前房屋的价值。

由于 d p [ i + 1 ] dp[i+1] dp[i+1] 只和 d p [ i ] dp[i] dp[i] 有关系,所以,我们只需要两个状态值即可。

时间复杂度为 O ( n ) O(n) O(n),空间复杂度为 O ( 1 ) O(1) O(1).

3. 代码实现

class Solution {
public:
    int rob(vector<int>& nums) {
        int stole_value = 0;
        int not_stole_value = 0;
        int max_value = 0;
        for (int i = 0; i < nums.size(); ++i) {
            int temp = not_stole_value;
            not_stole_value = max(stole_value, not_stole_value);
            stole_value = temp + nums[i];
            max_value = max(max_value, stole_value);
        }
        return max_value;
    }
};

相关推荐

  1. Leetcode 198 打家劫舍

    2024-05-03 04:16:03       43 阅读
  2. leetcode198 打家劫舍

    2024-05-03 04:16:03       29 阅读
  3. LeetCode198题 - 打家劫舍

    2024-05-03 04:16:03       58 阅读
  4. LeetCode-198打家劫舍(回溯&动归)

    2024-05-03 04:16:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-03 04:16:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-03 04:16:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-03 04:16:03       82 阅读
  4. Python语言-面向对象

    2024-05-03 04:16:03       91 阅读

热门阅读

  1. Matlab基本语法

    2024-05-03 04:16:03       32 阅读
  2. js如何把json列表转成数组

    2024-05-03 04:16:03       34 阅读
  3. 第八周学习笔记DAY.5-实用类介绍

    2024-05-03 04:16:03       36 阅读
  4. [C++基础学习]----03-程序流程结构之跳转语句详解

    2024-05-03 04:16:03       31 阅读
  5. Django知识点总结

    2024-05-03 04:16:03       28 阅读
  6. React框架是什么

    2024-05-03 04:16:03       38 阅读
  7. “一万年太久,只争朝夕”

    2024-05-03 04:16:03       40 阅读
  8. C# Solidworks二次开发:枚举应用实战(第九讲)

    2024-05-03 04:16:03       26 阅读