House Robber

House Robber(打家劫舍问题) 待补充 阅读详情

198. House Robber
题意:强盗计划沿街去盗窃每一个住户,每个房子都有一定量的现金,阻止盗窃的唯一阻碍是相邻的两个房子之间有安全系统,一旦这两个房子同时被盗窃,系统就会自动联系警察。给定一系列非负整数代表每个房子的金钱,求出再不惊动警察的情况下能盗窃到的最大值。
方法一:
一维DP, 当前最大值相当于Math.max(nums[i - 1],nums[i] + nums[i - 2]),处理一下边界情况

public class Solution {
    public int rob(int[] nums) {
        if(nums == null || nums.length == 0)
            return 0;

        for(int i = 0; i < nums.length; i++){
            int temp1 = i - 1 < 0 ? 0 : nums[i - 1];
            int temp2 = i - 2 < 0 ? 0 : nums[i - 2];
            nums[i] = Math.max(temp1, nums[i] + temp2);
        }

        return nums[nums.length - 1];
    }
}

方法二:
可以使用和climbing stairs类似的方法,用三个变量来保存临时结果。robLast和notRobLast分别代表 i - 1步和i - 2步。

public class LeetCode198 {
    public int rob(int[] nums) {
        if(nums == null || nums.length < 1) return 0;
        if(nums.length == 1) return nums[0];
        int nolast = 0;
        int last = 0;
        int prefit = 0;
        for (int i = 0; i < nums.length; i++) {
             prefit = Math.max(last, nolast + nums[i]);
             nolast = last;
             last = prefit;
        }
        return Math.max(nolast, last);
    }
}

方法三:
设定两个变量,分别表示选择了当前的房子和没有选择当前的房子

public class Solution {
    public int rob(int[] nums) {
        int best0 = 0;                      //choose current house
        int best1 = 0;                      // do not choose current house
        for(int i = 0; i < nums.length; i++){
            int temp = best0;
            best0 = Math.max(best0, best1);
            best1 = temp + nums[i];
        }
        return Math.max(best0, best1);
    }
}

213. House Robber II
题意:强盗计划沿街去盗窃每一个住户,每个房子都有一定量的现金,阻止盗窃的唯一阻碍是相邻的两个房子之间有安全系统,一旦这两个房子同时被盗窃,系统就会自动联系警察。给定一系列非负整数代表每个房子的金钱,求出再不惊动警察的情况下能盗窃到的最大值,其中所有房子是环形结构,即第一间和最后一间有安全系统。
方法一:
像House Robber I 中方法二一样,使用动态规划法,rob(nums, 0, nums.length - 2) 代表不抢最后一家,rob(nums, 1, nums.length - 1) 代表不抢第一家,

public class Solution {
    public int rob(int[] nums) {
        if (nums == null) return 0;
        if (nums.length == 1) return nums[0];

        return Math.max(rob(nums, 0, nums.length - 2), rob(nums, 1, nums.length - 1));
    }

    private int rob(int[] nums, int lo, int hi) {
        int res = 0, robLastHouse = 0, notRobLast = 0;
        for (int i = lo; i <= hi; i++) {
            res = Math.max(robLastHouse, notRobLast + nums[i]);
            notRobLast = robLastHouse;
            robLastHouse = res;
        }
        return res;
    }
}

337. House Robber III
题意:强盗计划沿街去盗窃每一个住户,每个房子都有一定量的现金,房子布局呈树状结构,阻止盗窃的唯一阻碍是相邻的两个房子之间有安全系统,一旦这两个房子同时被盗窃,系统就会自动联系警察。给定一系列非负整数代表每个房子的金钱,求出再不惊动警察的情况下能盗窃到的最大值。
思路:
像House Robber I 中方法三一样,使用动态规划法,对于每个节点,使用两个变量,res[0], res[1],分别表示不选择当前节点子树的数值和,选择当前节点子树的数值和,动态规划的思想,然后递归。

public class Solution {
     public int rob(TreeNode root) {
         int[] res = num(root);
         return Math.max(res[0], res[1]);
     }
     public int[] num(TreeNode root){
         if(root == null) return new int[2];
         int[] res = new int[2];
         int[] left = num(root.left);
         int[] right = num(root.right);
         // res[0]代表选择当前节点,res[1]代表不选择当前节点,以下是动态规划方程式
         res[0] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);
         res[1] = root.val + left[0] + right[0];
         return res;         
     }
}
最大公共字符串leetcode-HouseRobber-Problem-LeetCode-:HouseRobber-问题-LeetCode- 最大公共字符串leetcode HouseRobber-问题-LeetCode- @Faizansayeed28 代码 /** * 问题陈述- 你是一名职业劫匪,计划抢劫街道上的房屋。 每个房子都有一定数量的钱 藏起来,阻止你抢劫他们的唯一限制是相邻的房子有安全系统 连接,如果同一天晚上有两个相邻的房子被闯入,它会自动联系警察。 给定一个非负整数列表,代表每所房子的金额,确定最大金额 今晚你可以在不惊动警察的情况下抢劫多少钱。 */ 导入 java.util.Scanner; /** * @author Faizan Sayeed */ 公开课 HouseRobber { 静态整数缓存[]; // Method1()-递归解决方案 // 时间复杂度 - O(2^n) public static int robM1(int[] A, int i) { if (A == null || A.length == 0) return 0 ; if (A.length == 1) return A[0]; if (i < 0) return 0; int ith_house_is_selec 立即下载

相关推荐

find命令

命令是 Linux/Unix 系统中用于搜索文件和目录的强大工具,支持多种搜索条件组合,并能对搜索结果执行各种操作。以下是其详细说明、常用参数及示例: 搜索路径:指定起始目录(如 、 或 表示当前目录)。 查找条件:基于文件名、类型、大小、时间等属性过滤。 处理动作:对匹配结果执行操作(如打印、删除、执行命令等)。 常用参数及示例 1. 按名称查找 :区分大小写匹配文件名。 :不区分大小写匹配文件名。 2. 按文件类型查找 :指定文件类型。 文件类型: :普通文件 :目录 :符号链接

qiao2458的博客 1136

House Robber(房屋偷盗问题):动态规划解法

文章目录[LeetCode198. House Robber](https://leetcode.com/problems/house-robber/)1.定义状态最后一步子问题状态2.转移方程3.初始值和边界条件4.计算顺序5.代码6复杂度分析7.优化代码 LeetCode198. House Robber 序列型动态规划问题,仍然按照一般的分析方法进行分析 1.定义状态 最后一步 先明确...

超级无敌小胖头 1487

原创_新魔百和CM201-1鸿蒙架构当贝乐家语音安卓9线刷固件包刷机教程可救砖rom刷机包

不用担心变砖,因为系统内核会自动判断分区及CPU等级,假设你CPU是高于S905L3的那么。7.adb功能支持,系统增加开机自启功能,添加老人桌面模式,默认为年轻化桌面;所以我发的这个固件可适用于_cw_ys_zg_zn代工上生产的盒子进行刷机;5.CPU及GPU算法更改,当观看4K片源时,AI智能会自动优化系统后台进程,正如我所说,本固件是采用安卓公版镜像制作而成,那么代工厂也是使用的公版镜像,1.移植鸿蒙架构代码,完美融合安卓系统,增加系统的稳定性;刷机的时候 他会自动短接链接,所以不存在变砖。

a138088150的博客 1万+

动态规划——House Robber (小偷问题)

对于小偷问题,我们分析子问题的依赖关系,发现每个 f(k) 依赖 f(k−1)和 f(k−2)。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。小偷问题,原问题是 “从全部房子中能偷到的最大金额”,将问题的规模缩小,子问题就是 “从 k个房子中能偷到的最大金额 ”,用 f(k)表示。如果不偷这个房子,那么问题就变成在前 k−1个房子中偷到最大的金额,也就是子问题 f(k−1)。如果偷这个房子,那么前一个房子。

h1666186的博客 1220

SAR动目标检测三剑客:DPCA/ATI/STAP技术选型指南(含2023最新实验数据对比)

本文深入对比了SAR动目标检测三大主流技术DPCA、ATI与STAP的核心原理与性能差异。基于2023年最新实验数据,分析了它们在最小可检测速度、测速精度、计算复杂度及对通道失配敏感度等方面的优劣,并结合海洋监视与城市交通监控等典型场景,提供了具体的技术选型指南与工程落地考量。

m5n6o7的博客 294

tkinter使用label视频播放

tkinter是python的界面开发包 使用tkinter显示视频流的一个办法是使用label来逐帧显示图片。 from Tkinter import * from PIL import ImageTk, Image import cv2 root = Tk() # Create a frame app = Frame(root, bg="white") app.grid() # Create a label in the frame lmian = Label(app) lmain.grid(

六十英里的专栏 5527

LeetCode-198 & 213:House Robber (房屋抢劫)

每个房间里都有不同数量的财物,给出能抢劫的最大财物数。不能同时对相邻的房间进行抢劫。

大树先生的博客 2232

Nginx配置Cookie安全属性:HttpOnly、Secure、SameSite实战指南

Cookie是Web应用中维持用户状态的核心机制,其安全配置直接关系到会话管理与身份认证的可靠性。从原理上讲,HttpOnly属性可防止XSS攻击窃取Cookie,Secure属性确保Cookie仅在HTTPS加密连接中传输,而SameSite属性则用于控制跨站请求时Cookie的发送行为,能有效防御CSRF攻击。这些安全属性的技术价值在于构建纵深防御体系,提升应用的整体安全性。在现代浏览器(如Chrome 80+)默认将未明确声明的Cookie视为SameSite=Lax的背景下,正确配置这些属性变得尤为

weixin_33783283的博客 322

【LeetCode 面试经典150题】198. House Robber 房屋偷盗者

nums。

qq_43513394的博客 542

ESP32-C3入门教程 环境篇②——Windows开发环境准备

文章目录一、注意事项二、下载ESP-IDF工具安装器三、安装内容四、详细安装步骤报错处理 一、注意事项 请注意 ESP-IDF 和 ESP-IDF 工具的安装路径不能超过 90 个字符,安装路径过长可能会导致构建失败。 Python 或 ESP-IDF 的安装路径中一定不能包含空格或括号。 除非操作系统配置为支持 Unicode UTF-8,否则 Python 或 ESP-IDF 的安装路径中也不能包括特殊字符(非 ASCII 码字符、中文字符) 二、下载ESP-IDF工具安装器 ESP-IDF Win

5244

微信小程序 - error_msg:net::ERR_CONNECTION_RESET“(“errno“:600001,“errMsg“:“uploadFile:fail errcode:-101)

"errno":600001,"errMsg":"uploadFile:fail errcode:-101 cronet_error_code:-101 error_msg:net::ERR_CONNECTION_RESET"微信小程序,微信小程序wx.uploadFile报错,uniapp微信小程序uni.uploadFile上传文件报错,微信小程序调用wx.uploadFile返回错误ERR_CONNECTION_RESET,如何解决这个问题,上传图片出现报错,小程序上传视频报错,上传文件出现报错,如何

🏆 前端领域优质创作者 5414

House Robber系列问题

aa

面向搜素引擎编程 622

ArXiv 2026 即插即用 | Transformer篇 | WeightFormer:告别二次复杂度!无注意力的线性时间 Transformer,泛化能力拉满

WeightFormer是一种创新的动态Transformer架构,其核心创新在于通过双动态算子(空间自适应动态卷积和双边激活动态线性)实现输入自适应的特征提取。该模块采用静态-动态权重融合机制和低秩预测技术,在仅增加5%参数量的情况下显著提升模型泛化能力。相比传统Transformer,WeightFormer在ImageNet-1K上提升2.3%精度,小样本任务提升12%,同时保持线性计算复杂度。模块可直接替换标准Transformer块,特别适合轻量级视觉任务,实现了精度与效率的平衡。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 132

【Leetcode】House Robber

题目链接:https://leetcode.com/problems/house-robber/ 题目: You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint st

业精于勤,荒于嬉 3315

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

House Robber Leetcode 198,213,337

House Robber Leetcode 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 题目分析 动态规划。令 ans[i]ans[i]ans[i]...

qq_36835991的博客 420

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Leetcode: House Robber

最近做了leetcode上三道动态规划的题,觉得很不错,题目的评价也不错,故作此记录。 1、198. House Robber 题意:一组直线排列的房屋,一个小偷要进屋偷钱,如果小偷偷了相邻两座房屋就会触发报警系统,问在不触发报警系统的前提下小偷最多可以偷到多少钱。 难度:esay 思路: 1、由于是线性排列,所以一间房屋的相邻房屋只有其左右两间房屋,当我们依次查看房屋时,则一间房屋的相...

平凡 562

leetcode 213 : House Robber II

leetcode 213 : House Robber II

西施豆腐渣 1万+

Leetcode House Robber

House Robber I题目描述You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is th

humanleelxy的博客 311

House Robber LeetCode动态规划

LeetCode上动态规划的一个系列,从多个角度来考虑问题,从而更加熟练动态规划,加深理解和精通应用。 House Robber I 解法1: 递归 解法2: 递归+memorization 解法3: 动态规划1: 两个动态规划数组dp[i][0]和dp[i][1]分别表示在第i个位置不抢和抢的收益。 dp[i][0] = max(dp[i-1][0], dp[i-1][1]) dp[i][1] ...

大音希声大象无形 211

LeetCode --- House Robber & House Robber II

House Roober 让我们分三种情况考虑: - 拿[1]号房子,那么[2]和[N]号不能再拿,另外[3...N-1]退化为了直线型 - 拿[N]号房子,那么[1]和[N-1]号不能再拿,另外[2...N-2]退化为了直线型 - [1]和[N]号房子都不拿,那么[2...N-1]退化为了直线型

DowntownGuy的博客 591

LeetCode House Robber II

原题链接在这里:https://leetcode.com/problems/house-robber-ii/ 是House Robber的进阶题。这里第一家和最后一家不能同时偷,所以像House Robber建立一个res1, 把从第一家到倒数第二家能偷最大值依次存入res1, 再建立一个res2, 把第二家到最后一家能偷最大值依次存入res2. 返回res1最后一个值 和res2最后一个值

Dylan_Java_NYC的博客 592

leetcode House Robber II

题目Note: This is an extension of House Robber.After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, a

不积跬步,无以至千里 1746
上一篇: 求最大子数组之和
下一篇: Mysql安装若干事宜
Ruixin1993
博客等级 码龄10年 4粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值