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/

相关推荐
whitepure7 分钟前
万字详解Java中的面向对象(一)——设计原则
java·后端
autumnTop7 分钟前
为什么访问不了同事的服务器或者ping不通地址了?
前端·后端·程序员
后台开发者Ethan24 分钟前
Python需要了解的一些知识
开发语言·人工智能·python
Xの哲學29 分钟前
Perf使用详解
linux·网络·网络协议·算法·架构
用户67570498850231 分钟前
SQL 判断是否“存在”?99% 的人还在写错!
后端
PetterHillWater36 分钟前
12 MCP Servers的介绍
后端·aigc·mcp
想不明白的过度思考者39 分钟前
数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
数据结构·算法·排序算法
杨杨杨大侠40 分钟前
02 - 核心模型设计 🧩
后端
小Q圈圈41 分钟前
BeanUtils 你走好!MapStruct 才是对象转换的真香神器!
后端