欢迎光临散文网 会员登陆 & 注册

打家劫舍 -- LeetCode

2023-03-24 10:48 作者:原装-_-老弟  | 我要投稿

看不懂就借鉴,不丢人,还省时间呢.

题目 : 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。


给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高

        这道题刚开始也不太清晰,只知道可以套用动态规划,但具体的流程分析还不太熟练,所以还是看了解析.
        看过之后理解的思路如下:

  • 小偷偷窃时候不能连续偷。

  • 小偷每家可有两种状态,偷、不偷。

    • 偷时,则前一家一定没偷,即是前一家 没偷总额+今天偷的金额

    • 不偷时,则为前一家没偷与偷的最大值。

    如果每家金额为 moneys[] , 则可设二维数组 values[Homes][]; 一维记偷与不偷的金额.则第 i 家金额总和为

     然后会发现,数组中的数据都只使用了一次,所以,可定义两个变量来存储,最后代码如下:

代码:


打家劫舍 -- LeetCode的评论 (共 条)

分享到微博请遵守国家法律