Rust 力扣 - 198. 打家劫舍

文章目录

题目描述

题解思路

假设f(i)表示在[1, i]号内的房屋内进行偷盗能够获得的最高金额

存在递推公式

f(i) = max(f(i - 1), f(i - 2) + nums[i])

即f(i)为选择i - 1号房屋的最大金额 和 选择i - 2号房屋的最大金额 的最大值

题解代码

rust 复制代码
impl Solution {
    pub fn rob(nums: Vec<i32>) -> i32 {
        let mut n = nums.len();
        if n == 1 {
            return nums[0]
        }
        let (mut a, mut b) = (nums[0], nums[0].max(nums[1]));

        for i in 2..n {
            (a, b) = (b, (a + nums[i]).max(b));
        }

        b
    }
}

题目链接

https://leetcode.cn/problems/house-robber/

相关推荐
我是哪吒4 分钟前
分布式微服务系统架构第170集:Kafka消费者并发-多节点消费-可扩展性
后端·面试·github
纪元A梦16 分钟前
贪心算法应用:数字孪生同步问题详解
java·算法·贪心算法
曼巴UE518 分钟前
UE5.3 C++ 接口初步使用
开发语言·jvm·c++
纪元A梦18 分钟前
贪心算法应用:食品生产线排序问题详解
算法·贪心算法
奔跑的石头_23 分钟前
GO语言的主要语法和特性
开发语言
liulilittle38 分钟前
UNIX/macOS路由表查询原理与实现
服务器·开发语言·c++·macos·unix·编程语言
Badman1 小时前
分布式系统下的数据一致性-Redis分布式锁
redis·分布式·后端
信奥卷王1 小时前
2024年9月GESPC++三级真题解析(含视频)
算法
Java水解1 小时前
盘点那些自带高级算法的SQL
后端
HUST1 小时前
C语言 第三讲:分支和循环(上)
c语言·开发语言