美文网首页
44. LeetCode198. 打家劫舍

44. LeetCode198. 打家劫舍

作者: 月牙眼的楼下小黑 | 来源:发表于2018-10-12 21:32 被阅读9次
  • 标签: 动态规划 数组
  • 难度: 简单

  • 题目描述
  • 我的解法

设房子编号为 i, 房屋所藏资金为 Mi. 假设我们 挨家挨户上门踩点

我们先来到 0 号房,我们最多只能偷走 M0 元, R(0) 表示到目前为止(只踩点了 0 号房),如果我们准备盗窃 0 号房,我们最多能偷走的资金, R(0) = M0

我们接着来到 1 号房, 因为 M1 > M0, 我们最多能偷走 M1 元, R(1) 表示到目前为止(踩点了 0 号房和 1 号房),如果我们准备盗窃 1 号房,我们最多能偷走的资金,R(1) = M1.

我们接着来到 2 号房,用R(2) 表示到目前为止(踩点了 0 号房, 1 号房, 2 号房),如果我们准备盗窃 2 号房,我们最多能偷走的资金,R(2) = M2 + R(0)

我们接着来到 3 号房,用R(3) 表示到目前为止(踩点了 0 号房, 1 号房, 2 号房, 3号房),如果我们准备盗窃 3 号房,我们最多能偷走的资金,R(3) = M3 + max(R(0), R(1))

......

我们来到 i 号房,用R(i) 表示到目前为止(踩点了 0 号房, 1 号房, 2 号房, 3号房.....i号房),如果我们准备盗窃 i 号房,我们最多能偷走的资金,R(i) = Mi + max(R(0), R(1), ...R(i-2))

根绝 R(i) 递推式,我们不难实现如下代码 :

import numpy as np
class Solution(object):
    def rob(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        R = np.zeros(len(nums))
        for i in range(len(nums)):
            if(i==0 or i==1):
                R[i] = nums[i]
            else:
                R[i] = R[0:i-1].max() + nums[i]
        return int(R.max())

  • 其他解法

暂略。

相关文章

  • 44. LeetCode198. 打家劫舍

    标签: 动态规划 数组 难度: 简单 题目描述 我的解法 设房子编号为 i, 房屋所藏资金为 Mi. 假设我们...

  • LeetCode.打家劫舍问题

    一.LeetCode198.打家劫舍 1.题目链接 https://leetcode-cn.com/problem...

  • 动态规划之——打家劫舍

    LeetCode198. 打家劫舍 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,...

  • LeetCode-198-打家劫舍

    LeetCode-198-打家劫舍 198. 打家劫舍[https://leetcode-cn.com/probl...

  • 诗歌:小强盗

    小强盗 文/sunshine珊珊 去打家劫舍呀 只劫他一家 去打家劫舍呀 金山不要 银矿不要 去打家劫舍呀 只劫一...

  • 补卡-打家劫舍

    198. 打家劫舍

  • 返回大小姐星级酒店

    华东交大打家劫舍

  • v 的很简单

    打家劫舍看到半部分

  • 打家劫舍

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连...

  • 打家劫舍

    题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋...

网友评论

      本文标题:44. LeetCode198. 打家劫舍

      本文链接:https://www.haomeiwen.com/subject/pucnaftx.html