每日OJ题_简单多问题dp①_力扣LCR 089. 打家劫舍

目录

[力扣面试题 17.16. 按摩师](#力扣面试题 17.16. 按摩师)

解析代码


力扣LCR 089. 打家劫舍

三道一样/类似的题:

LCR 089. 打家劫舍

198. 打家劫舍

面试题 17.16. 按摩师

难度 中等

一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组 nums ,请计算不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。

示例 1:

复制代码
输入:nums = [1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。

示例 2:

复制代码
输入:nums = [2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
     偷窃到的最高金额 = 2 + 9 + 1 = 12 。

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 400
cpp 复制代码
class Solution {
public:
    int rob(vector<int>& nums) {

    }
};

解析代码

以某个位置为结尾,结合题目要求,dpi 表示:选择到 i 位置时,此时的最大金额。

但是我们这个题在 i 位置的时候,会面临选择 或者不选择两种抉择,所依赖的状态需要细分:

  • fi 表示:选择到 i 位置时, numsi 必选 ,此时的最大金额;
  • gi 表示:选择到 i 位置时, numsi 不选 ,此时的最大金额。

因为状态表示定义了两个,因此状态转移方程也要分析两个:

  • 对于 fi : 如果 numsi 必选,那么仅需知道 i - 1 位置在不选的情况下的最大金额 , 然后加上 numsi 即可,因此 fi = gi - 1 + numsi 。
  • 对于 gi : 如果 numsi 不选,那么 i - 1 位置上选或者不选都可以。因此,我们需要知道 i - 1 位置上选或者不选两种情况下的最大金额 ,因此 gi = max(fi - 1, gi - 1) 。
cpp 复制代码
class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        // f[i], g[i]表示:选择到 i 位置时,此时的最大金额。
        vector<int> f(n);
        auto g = f;
        f[0] = nums[0];
        for (int i = 1; i < n; i++)
        {
            f[i] = g[i - 1] + nums[i];
            g[i] = max(f[i - 1], g[i - 1]);
        }
        return max(f[n - 1], g[n - 1]);
    }
};
相关推荐
传奇开心果编程2 分钟前
【Rust入门练中学】第8课:错误处理
开发语言·rust·错误处理·编程语言理论·通用编程语言
郑同学的笔记18 分钟前
【c++随笔30】C++ 注册回调函数
开发语言·c++
七夜zippoe33 分钟前
启元 Q1 腿部运动学逆解:Python 算站立下蹲关节角
开发语言·python·ai·机器人·腿部运动学
熊猫钓鱼>_>38 分钟前
精准碰一碰近场分享与拖拽投送实战:把文件“碰“进另一台设备【鸿蒙心迹】
开发语言·华为·harmonyos·鸿蒙·openharmony
lengxuenong41 分钟前
树状数组 · 信息学学习手册2-离散化与逆序对
c++·学习·算法
琳达爱分享42 分钟前
五个线程同时去换 token,四个被踢下线:刷新接口其实不是幂等的
后端·算法·架构
十二43 分钟前
【洛谷题解】P1115 最大子段和(前缀和 + 维护最小前缀)
数据结构·c++·算法·蓝桥杯
Xin7701 小时前
LeetCode 46. 全排列(回溯法)
leetcode
CodeGL1 小时前
9、Python基础之IO编程
开发语言·数据库·python
renhongxia11 小时前
RAG检索增强生成:打通大模型与外部知识的通道
大数据·人工智能·算法