LeetCode 198—— 打家劫舍

news/2024/9/23 5:05:52/

阅读目录

    • 1. 题目
    • 2. 解题思路
    • 3. 代码实现

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;}
};

http://www.ppmy.cn/news/1448738.html

相关文章

windows ubuntu sed,awk,grep篇,6.sed 保持空间和模式空间命令

目录 41.用保持空间替换模式空间(命令 x) 42.把模式空间的内容复制到保持空间(命令 h) 43.把模式空间内容追加到保持空间(命令 H) 44.把保持空间内容复制到模式空间(命令 g) 45.把保持空间追加到模式空间(命令 G) Sed 有两个内置的存储空间&#xff1a; z 模式空间:如你所知&…

SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测(Matlab)

SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测&#xff08;Matlab&#xff09; 目录 SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测&#xff08;Matlab&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现MFO-CNN…

利用STM32实现语音识别功能

引言 随着物联网和智能设备的普及&#xff0c;语音识别技术正逐渐成为用户交互的主流方式之一。 STM32微控制器具备处理高效率语音识别算法的能力&#xff0c;使其成为实现低成本、低功耗语音交互系统的理想选择。 本教程将介绍如何在STM32平台上开发和部署一个基础的语音识…

c++多文件,cmakelist编写简单示例

记录下c多文件cmakelist编写流程&#xff1a; 目录结构大致如下&#xff1a; 1、swap.h #include <iostream> #include <vector> #include <string> using namespace std;void swap(int *a,int *b); 2、swap.cpp #include "swap.h"void swap(…

全面解析Unity至Unreal的项目迁移流程

引言 在游戏开发领域&#xff0c;Unity和Unreal Engine都是顶尖的选择&#xff0c;各自带有独特的优势。对于追求更高图形质量和更强大物理模拟的开发团队而言&#xff0c;将项目从Unity迁移到Unreal可能是一个值得考虑的选择。本文将详细介绍整个迁移流程&#xff0c;帮助开发…

【Axure高保真原型】拖动穿梭选择器

今天和大家分享拖动穿梭选择器的原型模板&#xff0c;我们可以拖动两个选择器里的选项标签&#xff0c;移动到另外一个选择器里。那这个原型模板是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;只需要在中继器表格里填写选项信息&#xff0c;即可自动生成交互效果&a…

搜索引擎的设计与实现参考论文(论文 + 源码)

【免费】搜索引擎的设计与实现.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89249705?spm1001.2014.3001.5501 搜索引擎的设计与实现 摘要&#xff1a; 我们处在一个大数据的时代&#xff0c;伴随着网络信息资源的庞大&#xff0c;人们越来越多地注重怎样才能…

动态规划——记忆化递归

1.情景导入 你应该知道斐波那契数列吧&#xff01;就是前两项之和等于这一项。如果你学过递归&#xff0c;你肯定会写这道题&#xff1a;输入一个N代表你要求的项数&#xff0c;然后输出斐波那契的第N项。这道题看似简单&#xff0c;实则也挺简单实则特别困难&#xff08;对于…