打家劫舍 第一家和最后一家最多偷一家
class Solution:
def rob(self , nums: List[int]) -> int:
#dp[i]表示长度为i的数组,最多能偷取多少钱
dp1 = [0 for i in range(len(nums) + 1)]
#选择偷了第一家
dp1[1] = nums[0]
#最后一家不能偷
for i in range(2, len(nums)):
#对于每家可以选择偷或者不偷
dp1[i] = max(dp1[i - 1], nums[i - 1] + dp1[i - 2])
res = dp1[len(nums) - 1];
#第二次循环
dp2 = [0 for i in range(len(nums) + 1)]
#不偷第一家
dp2[1] = 0
#可以偷最后一家
for i in range(2, len(nums) + 1):
#对于每家可以选择偷或者不偷
dp2[i] = max(dp2[i - 1], nums[i - 1] + dp2[i - 2])
#选择最大值
return max(res, dp2[len(nums)])#牛客AI配图神器#
def rob(self , nums: List[int]) -> int:
#dp[i]表示长度为i的数组,最多能偷取多少钱
dp1 = [0 for i in range(len(nums) + 1)]
#选择偷了第一家
dp1[1] = nums[0]
#最后一家不能偷
for i in range(2, len(nums)):
#对于每家可以选择偷或者不偷
dp1[i] = max(dp1[i - 1], nums[i - 1] + dp1[i - 2])
res = dp1[len(nums) - 1];
#第二次循环
dp2 = [0 for i in range(len(nums) + 1)]
#不偷第一家
dp2[1] = 0
#可以偷最后一家
for i in range(2, len(nums) + 1):
#对于每家可以选择偷或者不偷
dp2[i] = max(dp2[i - 1], nums[i - 1] + dp2[i - 2])
#选择最大值
return max(res, dp2[len(nums)])#牛客AI配图神器#
全部评论
相关推荐
一个真正的_Man:下班是做这个滑滑梯下来吗

点赞 评论 收藏
分享
08-27 15:17
杭州电子科技大学 嵌入式软件开发 点赞 评论 收藏
分享