首页 > 其他分享 >「动态规划」LeetCode 70(爬楼梯)

「动态规划」LeetCode 70(爬楼梯)

时间:2023-04-03 21:02:18浏览次数:55  
标签:台阶 复杂度 70 爬楼梯 LeetCode dp

Leetcode 70 题

有人问我:烤冷面你这两周怎么总搞简单题?我想说:一步一步来~

题干简述

给定:

  • 假设你正在爬楼梯,需要爬 n 阶你才能到达楼顶。
  • 每次你可以爬 1 或 2 个台阶。

要求:计算出有多少种爬楼梯的方式。

解题思路

如果我们缩小视野(把大问题化为小问题),爬到第 n 阶台阶有两种方式:

  • 从 n-1 阶爬一级台阶
  • 从 n-2 阶爬两级台阶

用公式表达:dp[n] = dp[n−1] + dp[n−2],其中的特例是:dp[0]=1 和 dp[1]=1

嚯!这不就是LeetCode 509(斐波那契数列)么。

代码实现

class Solution:
    def climbStairs(self, n: int) -> int:
        if n <= 2:
          return n

        dp = [0]*(n+1)
        dp[0] = 1
        dp[1] = 1

        for i in range(2, n+1):
            dp[i] = dp[i-1] + dp[i-2]

        return dp[n]

复杂度

时间复杂度O(n),空间复杂度O(n)。


关注公众号:「腐蚀脚本」,加入交流群。

文章归档:烤冷面讲算法系列

转载声明:本文章允许转载,原文地址:「动态规划」LeetCode 70(爬楼梯)

标签:台阶,复杂度,70,爬楼梯,LeetCode,dp
From: https://blog.51cto.com/u_15758189/6167497

相关文章

  • 【LEETCODE】​​1053. 交换一次的先前排列​
    1053.交换一次的先前排列难度中等95给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。如果无法这么操作,就请返回原数组。 示例1:输入:arr=[3,2,1]输出:[3,1,2]解释:交换2......
  • Wallys|Wi-Fi 7 SoC chip • Alder / BellsIPQ9574 / IPQ9554 / IPQ9514|IPQ9570 / IP
      Wi-Fi7explainedWiFi7istheupcomingWiFistandard,alsoknownasIEEE802.11beExtremelyHighThroughput(EHT).Itworksacrossallthreebands(2.4GHz,5GHz,and6GHz)tofullyutilizespectrumresources.WhileWiFi6wasbuiltinresponseto......
  • LeetCode 145 二叉树的后序遍历
    LeetCode|145.二叉树的后序遍历给你一棵二叉树的根节点root,返回其节点值的后序遍历。示例1:1\2/3输入:root=[1,null,2,3]输出:[3,2,1]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]提示:树中节点的数目在范围[0,10......
  • [leetcode每日一题]4.3
    1053. 交换一次的先前排列提示中等80相关企业给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。如果无法这么操作,就请返回原数组。 示例1:输入:arr=[3,2,1]输出:[3,1,2]......
  • 【DP】LeetCode 256. 粉刷房子
    题目链接256.粉刷房子假如有一排房子,共n个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜......
  • leetcode题中的逆向思维——集锦
    417.太平洋大西洋水流问题虽然题目要求的是满足向下流能到达两个大洋的位置,如果我们对所有的位置进行搜索,那么在不剪枝的情况下复杂度会很高。因此我们可以反过来想,从两个大洋开始向上流,这样我们只需要对矩形四条边进行搜索。搜索完成后,只需遍历一遍矩阵,满足条件的位置即为两个......
  • leetcode 394.字符串解码 Java
    394.字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外......
  • leetcode 739.每日的温度 Java
    739.每日的温度给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。示例1:输入:temperatures=[73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,......
  • leetcode 20. 有效的括号 Java
    给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例1:输入:s="()"输出:true示例2:输入:s="()[]{}"输出:true......
  • Leetcode(剑指offer专项训练)——DP专项(6)
    排序的数目题目给定一个由不同 正整数组成的数组nums,和一个目标整数target。请从nums中找出并返回总和为target的元素组合的个数。数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。题目数据保证答案符合32位整数范围。链接无效DFS......