LeetCode、198. 打家劫舍【中等,一维线性DP】

文章目录

  • 前言
  • LeetCode、198. 打家劫舍【中等,一维线性DP】
    • 题目及分类
    • 思路
      • 线性DP(一维)
  • 资料获取

前言

博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。

博主所有博客文件目录索引:博客目录索引(持续更新)

视频平台:b站-Coder长路


LeetCode、198. 打家劫舍【中等,一维线性DP】

题目及分类

题目链接:LeetCode、198. 打家劫舍

分类:动态规划/线性DP


思路

线性DP(一维)

思路说明

首先抓住条件:①无法同时偷连续的两所房子。②每个房屋钱财非负。③找到最贵的一种打劫方案求得最高金额。

采用线性DP,假设dp(i)就是抢夺金额最高的一种方案总金额,即可列出一条递推方程:

  • dp(i) = Math.max(dp[i - 1], dp[i - 2] + (i < n ? nums[i] : 0)),无非是第i-1的最高金额与i-2偷得到的+当前屋子偷得到的金额取一个最大值即可。

复杂度分析:时间复杂度O(n),空间复杂度O(n)

class Solution {//dp(i) = Math.max(dp(i-1), dp(i - 2) + nums(i))public int rob(int[] nums) {int n = nums.length;if (n == 1) return nums[0];int[] dp = new int[n + 1];dp[0] = nums[0];dp[1] = Math.max(nums[0], nums[1]);for (int i = 2; i <= n; i ++) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + (i < n ? nums[i] : 0));}return dp[n];}
}

image-20240205212226660


资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

  • 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
  • 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
  • 学习与生活-专栏:可以了解博主的学习历程
  • 算法专栏:算法收录

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/454508.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis核心技术与实战【学习笔记】 - 25.Redis 支撑秒杀场景的关键技术

简述 秒杀是一个非常经典的活动场景&#xff0c;比如&#xff0c;在双 11、618 等电商促销活动中&#xff0c;都会有秒杀场景。秒杀场景的业务特点是限时限量&#xff0c;业务系统要处理瞬时的大量高并发请求&#xff0c;而 Redis 就经常被用来支撑秒杀活动。 秒杀场景包含多…

代码随想录算法训练营第二十七天|39. 组合总和、40. 组合总和 II、131. 分割回文串。

39. 组合总和 题目链接&#xff1a;组合总和 题目描述&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这…

PMP证书可以挂靠吗?

PMP证书的意义并不是为了挂靠&#xff0c;而是实际项目管理中的使用。 在考证人的质疑中总会有一个质疑就是“我所考的证书能挂靠吗&#xff1f;”其实PMP认证和其他认证一样只是证明你所掌握的专业知识的一个证明&#xff0c;无法有挂靠作用&#xff0c;千万不要相信那些说PM…

流浪动物救助|基于Springboot的流浪动物救助平台设计与实现(源码+数据库+文档)

流浪动物救助平台目录 目录 基于Springboot的流浪动物救助平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、动物信息管理 3、商品评论管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

华清作业day53

1.c代码&#xff1a; #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> struct msgbuf{long in…

2.5消息队列实现进程之间通信

send.c #include<myhead.h>//定义消息类型 struct msgbuf {long int mtype; //消息类型char mtext[1024]; //消息正文内容 };//宏定义一个消息大小 #define MSGSIZE sizeof(struct msgbuf)-sizeof(long int) int main(int argc, const char *argv[]) {//1、创建key值以…

【数据结构与算法】(10)基础数据结构 之 堆 建堆及堆排序 详细代码示例讲解

目录 2.9 堆建堆习题E01. 堆排序E02. 数组中第K大元素-Leetcode 215E03. 数据流中第K大元素-Leetcode 703E04. 数据流的中位数-Leetcode 295 2.9 堆 以大顶堆为例&#xff0c;相对于之前的优先级队列&#xff0c;增加了堆化等方法 public class MaxHeap {int[] array;int siz…

浅谈交换原理(1)——概述

一、什么是交换 在通信系统中&#xff0c;我们所认知的最简单的通信方式就是点对点通信&#xff0c;但是当有多个终端需要进行相互通信时&#xff0c;点对点通信就具有一定的局限性&#xff0c;如下图所示&#xff1a; 我们如果想要做到全互连方式两两相连&#xff0c;假设终端…

04. 【Linux教程】安装 Linux 操作系统

通过前面的小节学习&#xff0c;我们已经对 Linux 操作系统有了简单的了解&#xff0c;同时也在 Windows 下安装了虚拟机软件 VMware &#xff0c;那么本节课我们就介绍下如何使用虚拟机软件安装 Linux 操作系统。 通过第一小节的学习我们知道 Linux 有很多的发行版本&#xf…

2024年1月30日

2024年1月30日13:00:50 2024年1月30日13:09:32二连击破 2024年1月30日13:18:20三联绝世 2024年1月30日13:32:03继续拿下

Akamai 如何揪出微软 RPC 服务中的漏洞

近日&#xff0c;Akamai研究人员在微软Windows RPC服务中发现了两个重要漏洞&#xff1a;严重程度分值为4.3的CVE-2022-38034&#xff0c;以及分值为8.8的CVE-2022-38045。这些漏洞可以利用设计上的瑕疵&#xff0c;通过缓存机制绕过MS-RPC安全回调。我们已经确认&#xff0c;所…

【Java 数据结构】String进阶

字符串常量池 1. 创建对象的思考2. 字符串常量池(StringTable)3. 再谈String对象创建 1. 创建对象的思考 下面两种创建String对象的方式相同吗&#xff1f; public static void main(String[] args) {String s1 "hello";String s2 "hello";String s3 …