tag5:动态规划 爬楼梯+打家劫舍

1、爬楼梯

leetcode70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2

输出: 2

解释: 有两种方法可以爬到楼顶。

1.  1 阶 + 1 阶

2.  2 阶

示例 2:

输入: 3

输出: 3

解释: 有三种方法可以爬到楼顶。

1.  1 阶 + 1 阶 + 1 阶

2.  1 阶 + 2 阶

3.  2 阶 + 1 阶

思路:当前台阶总方式为减少一阶和减少二阶的总数和。

代码如下:

class Solution:

    def climbStairs(self, n: int) -> int:

        if n==1:

            return 1

        result=[]

        result.append(1)

        result.append(2)

        for i in range(2,n):

            result.append(result[i-1]+result[i-2])

        return result[n-1]


2、打家劫舍

leetcode198. 打家劫舍

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

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

示例 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:

        if len(nums)==0:

            return 0

        result=[]

        result.append(nums[0])

        if len(nums)==1:

            return result[-1]

        tmp1=nums[0]

        tmp2=nums[1]

        smax=max(tmp1,tmp2)

        result.append(smax)

        for i in range(2,len(nums)):

            smax1=result[i-2]+nums[i]

            smax2=result[i-1]

            smax=max(smax1,smax2)

            result.append(smax)

        return result[-1]


1、最大子序和

leetcode53. 最大子序和

2、买卖股票的最佳时机

leetcode121. 买卖股票的最佳时机

3、爬楼梯

leetcode70. 爬楼梯

4、打家劫舍

leetcode198. 打家劫舍

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题一:leetcode:1143(最长公共子序列)(https://leetcode-cn.com/problem...
    顺_91b1阅读 994评论 0 0
  • 198-打家劫舍 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约...
    _拂殇阅读 1,326评论 0 0
  • 问题描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装...
    zsdy阅读 1,638评论 0 1
  • 1、贪心算法 贪心算法的指导思想是:每一步下的最优,也就是局部最优,一定情况下逼近全局最优。 对应刷题:买卖股票的...
    是黄小胖呀阅读 3,741评论 0 0
  • 总结:https://labuladong.gitbook.io/algo/ 最长回文子串 https://lee...
    我是小曼巴阅读 3,682评论 0 1