zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):动态规划类:第198题:打家劫舍:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。

    题目:

    打家劫舍:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。  给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。  

    思路:

    使用动态规划的框架。

    程序:

    class Solution:
        def rob(self, nums: List[int]) -> int:
            if not nums:
                return 0
            length = len(nums)
            if length == 1:
                return nums[0]
            if length == 2:
                return max(nums[0], nums[1])
            auxiliary = [-1] * (length + 1)
            auxiliary[0] = 0
            auxiliary[1] = nums[0]
            for index in range(1, length):
                auxiliary[index + 1] = max(auxiliary[index], auxiliary[index - 1] + nums[index])
            return auxiliary[-1]
    

      

  • 相关阅读:
    Gym102028L
    CF985G
    三元环 & 四元环计数 学习笔记
    Hall 定理 学习笔记
    CF36E
    CF1110G
    P6071
    可持久化数据结构 学习笔记
    多项式全家桶
    c++ 编译zlib
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12876342.html
Copyright © 2011-2022 走看看