益阳建设网站,网站怎么推广怎么做,大学生html网页设计作业,wordpress免费企业站主题Python3实现打家劫舍问题原题 https://leetcode-cn.com/problems/house-robber/
你是一个专业的小偷#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统#xff0c;如果两间相邻的房屋在同…
Python3实现打家劫舍问题原题 https://leetcode-cn.com/problems/house-robber/
你是一个专业的小偷计划偷窃沿街的房屋。每间房内都藏有一定的现金影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统如果两间相邻的房屋在同一晚上被小偷闯入系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组计算你在不触动警报装置的情况下能够偷窃到的最高金额。
示例 1:
输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 1) 然后偷窃 3 号房屋 (金额 3)。偷窃到的最高金额 1 3 4 。示例 2:
输入: [2,7,9,3,1]
输出: 12
解释: 偷窃 1 号房屋 (金额 2), 偷窃 3 号房屋 (金额 9)接着偷窃 5 号房屋 (金额 1)。偷窃到的最高金额 2 9 1 12 。解题
class Solution:def rob(self, nums: List[int]) - int:n len(nums)if n 0:return 0if n 1:return nums[0]if n 2:return max(nums[0], nums[1])e0 0e1 nums[0]e2 max(nums[0], nums[1]) #动态规划思路但是只需要3个中间值for i in range(3, n 1):e0, e1, e2 e1, e2, max(nums[i-1] e1, nums[i-2] e0)return e2