day43|打家劫舍系列 198.打家劫舍 213. 打家劫舍 II 337.打家劫舍 III

news2024/11/24 14:48:44

文章目录

  • 前言
  • 198.打家劫舍
    • 思路
    • 方法一
  • 213. 打家劫舍 II
    • 思路
    • 方法一
  • 337.打家劫舍 III
    • 思路
    • 方法一
    • 方法二 暴力搜索和记忆化递推
  • 总结


前言

198.打家劫舍

在这里插入图片描述

思路

非常直接的思路
dp五部曲

  1. dp极其下标含义:**考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。**考虑的意思是:考虑偷或者考虑不偷
  2. 递推公式:决定dp[i]的因素就是第i房间偷还是不偷。
    如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。
    如果不偷第i房间,那么dp[i] = dp[i - 1],即考 虑i-1房
    然后dp[i]取最大值,即dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);
  3. 初始化:由递推公式可以看出,基础初始化一定是dp[0]和dp[1]。所以需要初始化0和1,dp[0] 一定是 nums[0],dp[1]就是nums[0]和nums[1]的最大值即
  4. 遍历顺序:由于需要由前面的两项推导出来,所以一定是从前到后遍历;
    在这里插入图片描述

方法一

考虑特殊情况

class Solution(object):
    def rob(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) == 0: return 0
        if len(nums) == 1: return nums[0]
        dp = [0] * len(nums)
        
        dp[0],dp[1] = nums[0],max(nums[0],nums[1])
        for i in range(2,len(nums)):
            dp[i] = max(dp[i-1],dp[i-2]+nums[i])
        return dp[-1]

213. 打家劫舍 II

在这里插入图片描述

思路

思路非常巧妙!!💕
用下面这个图将环形的转换为线性,也就是三种情况。1. 不考虑首位 2. 不考虑尾 3. 不考虑首。其中,1可以忽略,那么就是找2和3这两个情况里面max的。

在这里插入图片描述

方法一

写了一个函数来反复调用
自己写的注意事项

  1. 注意特殊情况,别忘了
  2. 忘了dp的初始化💜非常不应该
  3. nums[0:-1]和nums[1:]表示的是不包括尾巴,和不包括head的写法,[0:-1]这个slice不包括倒数第一个元素
  4. 卡哥写的注意一下,他只使用两个变量,premax和currmax即可
class Solution(object):
    def

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP地址安全与隐私保护

在当今数字化时代,IP地址作为网络设备的唯一身份标识,在网络安全与隐私保护中扮演着至关重要的角色。然而,随着网络技术的飞速发展,IP地址也面临着诸多挑战,对用户的隐私和网络安全构成了潜在威胁。本文将对IP地址在网…

JAVA基础:封装、继承和多态(详讲)

1 封装 面向对象的三大特征 : 封装, 继承, 多态 。 封装可以从三个层面理解 将属性和方法组合在一起(封闭在一起) 将属性隐藏起来, 对外提供可以间接操作属性的方法。(提高程序设计安全性&…

CephFS使用

CephFS使用 一、CephFS架构二、部署CepfFS服务1、部署MDS服务2、创建CephFS metadata和data存储池3、创建cephFS并验证4、创建客户端账户5、安装ceph客户端并同步认证文件6、内核空间挂载ceph-fs6.1 客户端通过key文件挂载6.2 开机自动挂载 7、客户端模块挂载7.1 用户空间挂载c…

​​​​​​​《黑神话:悟空》—— 高科技点亮西游神话璀璨之路

《黑神话:悟空》作为一款以中国神话为背景的西游题材单机游戏,自诞生起便备受瞩目。它以中国古典名著《西游记》为蓝本,文化内涵深厚,承载着无数国人的童年回忆和文化情感。凭借高科技打造出美轮美奂的画面——细腻逼真的环境场景…

代理服务器详解(proxy server)

什么是代理服务器 (proxy server) 代理服务器(Proxy Server)是一个中间服务器,位于客户端和目标服务器之间。它代表客户端向目标服务器发送请求,并将目标服务器的响应返回给客户端,其模型如下图所示: 客户…

2024年“羊城杯”粤港澳大湾区网络安全大赛Misc 部分解析

2024年“羊城杯”粤港澳大湾区网络安全大赛Misc 部分解析 前言:数据安全:不一样的数据库_2:Misc - hiden:Misc - miaoro: 前言: 本次 解析是后期复现 当时没时间打 用于交流学习,感谢支持&…

代码随想录算法训练营第三十二天(动态规划 一)

前几天有点忙加上贪心后面好难QWQ 暂时跳过两天的贪心,开始学动归 动态规划理论基础: 文章链接:代码随想录 文章思维导图: 文章摘要: 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题&…

运动耳机哪个牌子的好?五大口碑爆棚的骨传导运动耳机全方位分析

随着健康意识的提高和运动文化的普及,越来越多的人开始注重运动时的舒适度和体验感。在众多运动装备中,耳机作为不可或缺的一部分,其选择对运动体验有着直接的影响。传统的入耳式耳机在运动时可能会因为汗水、滑落等问题影响使用体验&#xf…

‘聊天不要太正经,越调戏对方越爱你的搞笑句子’

01 02 03 04 05 06 07 免费小程序《字形绘梦》上线啦! 欢迎大家体验!

自动驾驶技术软件教学平台

1、基本介绍 自动驾驶技术软件教学平台是中智讯公司开发的一款面向人工智能相关专业自动驾驶方向的综合型实验平台,主要满足:机器人控制技术、机器人操作系统、机器视觉技术、机器语言技术、智能边缘计算、人工智能中间件、机器人协作、SLAM导航等课程的…

餐饮行业的数字化转型——霸王餐API接口对接

霸王餐API接口对接对餐饮行业的数字化转型具有显著的推动作用,其关键优势和特点包括: 提升运营效率:通过自动化管理,减少人工操作,提高工作效率和减少错误。优化消费者体验:提供实时的菜品信息、下单和支付…

《软件工程导论》(第6版)第9章 面向对象方法学引论 复习笔记

第9章 面向对象方法学引论 一、面向对象方法学概述 1.要点 面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。 (1)基本原则 面向对象方法学的出发点和基本原则,是尽可能模拟人…

NPDP|如何在传统行业中做好产品管理的策略与建议

在当今这个快速变化的数字时代,传统行业面临着前所未有的挑战与机遇。产品管理作为连接市场需求与企业生产的核心环节,其重要性不言而喻。对于传统行业而言,做好产品管理不仅意味着保持竞争力,更是实现转型升级、拥抱未来的关键。…

MATLAB进行天线阵列方向图综合

摘要:本次推文将介绍如何利用MATLAB的Sensor Array Analyzer进行天线阵列的方向图综合。 1. 阵列方向图综合理论 对于均匀平面阵列而言,其阵因子公式可以写成 当阵列是三角网格布置或者圆环阵时,《ANTENNA THEORY ANALYSIS AND DESIGN》等相…

前端跨域问题详解与解决方案指南

什么是跨域问题 跨域问题通常是由浏览器的同源策略(Same-OriginPolicy,SOP)引起的访问问题 同源策略是浏览器的一个重要安全机制,它用于限制一个来源的文档或脚本如何能够与另一个来源的资源进行交互 同源策略的定义 同源策略要…

【MySQL_JDBC】Day23-Day28 数据库基础、JDBC基础、聊天室3.0

数据库 数据库基本概念 数据库DataBase 定义: 保存数据的仓库就称为数据库 例如 编写一个用户管理系统,可以让用户在我们编写的系统上进行注册等操作,此时就涉及到了保存用户数据的操作,目前我们的做法可以将一个用户信息以一个User对象…

【精选】大型体育场管理系统的设计与实现(全网最新定制,独一无二)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Unity(2022.3.41LTS) - UI详细介绍-Dropdown(下拉列表)

目录 零.简介 一、基本功能与用途 二、组件介绍 三、使用方法 四、优化和注意事项 五.代码实例 零.简介 在 Unity 中,下拉列表(Dropdown)是一种常用的 UI 组件,用于提供一组选项供用户选择。 一、基本功能与用途 选项选择…

【出行计划 / 2】

题目 思路 暴力 O ( m ⋅ n ) O(m \cdot n) O(m⋅n) \;\;\;\;\; 不可行 树状数组差分 O ( m ⋅ l o g ( 5 e 5 ) ) O(m \cdot log(5e^{5})) O(m⋅log(5e5)) \;\;\;\;\; 可行 具体思路: t [ i ] ∈ [ q k − c [ i ] 1 , q k ] t[i] \in [qk-c[i]1, \;qk…

stm32的内部时钟源 | RC震荡电路

文章目录 前言学习了解 前言 了解到 内部高速RC振荡器(HSI)就是RC震荡器实现的,故想对RC震荡做些了解与分析。 学习了解 【不需要晶振,也可产生时钟脉冲!RC振荡器的工作原理,维恩电桥振荡器!…