LeetCode:198. 打家劫舍

简介

题目链接:https://leetcode.cn/problems/house-robber/description/

解决方式:数组 + 动态规划

这是作者学习众多大神的思路进行解题的步骤,很推荐大家解题的时候去看看题解里面大佬们的思路、想法!

推荐看 nettee 大佬的讲解。

动态规划

经典

解题思路:重要的是状态的定义(前 k 个房间最大金额)和状态转移方程式(k - 1 房间偷还是不偷)。

java 复制代码
class Solution {
    public int rob(int[] nums) {
        // 边界处理
        if(nums.length == 0){
            return 0;
        }
        // 状态的定义
        int n = nums.length;
        int[] dp = new int[n + 1];
        // 初始值
        dp[0] = 0;
        dp[1] = nums[0];
        // 状态转移方程式(递推)
        for(int i = 2; i <= n; i++){
            dp[i] = Math.max(dp[i - 1], nums[i - 1] + dp[i - 2]);
        }
        // 返回结果
        return dp[n];
    }
}

空间优化

java 复制代码
public int rob(int[] nums) {
    int prev = 0;
    int curr = 0;

    // 每次循环,计算"偷到当前房子为止的最大金额"
    for (int i : nums) {
        // 循环开始时,curr 表示 dp[k-1],prev 表示 dp[k-2]
        // dp[k] = max{ dp[k-1], dp[k-2] + i }
        int temp = Math.max(curr, prev + i);
        prev = curr;
        curr = temp;
        // 循环结束时,curr 表示 dp[k],prev 表示 dp[k-1]
    }

    return curr;
}
相关推荐
hansang_IR5 小时前
【题解】[AGC020E] Encoding Subsets
c++·算法·dp
核数聚5 小时前
【赛迪专访核数聚】深耕数据治理,打通数据孤岛夯实 AI 发展根基
大数据·人工智能·算法
小许同学记录成长5 小时前
相对辐射定标技术文档
图像处理·算法
白白白小纯6 小时前
算法篇—返回倒数第k个节点
c语言·数据结构·算法·leetcode
小羊先生car6 小时前
RTOS-F429-HAL-(动/静态)任务的创建(2026/7/27)
开发语言·算法·c#
无忧.芙桃6 小时前
数据结构之堆
c语言·数据结构·c++·算法·
Sagittarius_A*6 小时前
[LitCTF2026] lit_xor_two_story
python·算法·密码学
小蒋学算法6 小时前
算法-删除元素后最大固定点数目-典型最长增长序列算法
数据结构·算法
RD_daoyi6 小时前
Google偷偷给AI引用加了五个新功能:内联引用、悬停预览、品牌展示……但点击率真的回来了吗?
大数据·网络·人工智能·算法·安全·搜索引擎
船漏了就会沉7 小时前
后缀自动机(SAM):字符串处理的“万能瑞士军刀”
算法