Climbing stairs (70)

2024-01-25 05:32
文章标签 70 climbing stairs

本文主要是介绍Climbing stairs (70),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写了个top-down的divide and conquer程序,可惜超时了。

class Solution:def climbStairs(self, n: int) -> int:# divide and conquer?if n == 0:return 1if n <= 1:return self.climbStairs(n-1)if n >= 2:return self.climbStairs(n-1) + self.climbStairs(n-2)

写个bottom up的DP程序,还是比较清楚的。
induction的初始值,以及推导步骤。
就是到每个节点的可能有两种:1种是经过它前面的一个节点,再一跳。另一种是不经过它前面的节点,从它前两个那里,跳两个台阶。
所以ways[n] = ways[n-1]+ways[n-2]

class Solution:def climbStairs(self, n: int) -> int:# treat it as a DP problem# number of possible ways to the ith stepways = [0 for i in range(n)]if n==1: return 1if n==2: return 2ways[0] = 1   # only one choice for 1 stepways[1] = 2   # only two choices for two stepsfor i in range(2,n):ways[i] = ways[i-1] + ways[i-2] # only 2 choices, passing i-1th node or not passing it# passing the i-1th node by doing one step# not passing the i-1th node by doing two steps# so when combined, it will all the possibilities.return ways[n-1]

因为其实用不到存储那么多值,只需要两个变量就可以了。
主要是需要搞好ways_prev2, 和ways_prev初始值的顺序,不然就错了。
这就是个斐波那契数列。

class Solution:def climbStairs(self, n: int) -> int:# treat it as a DP problem# number of possible ways to the ith stepif n==1: return 1if n==2: return 2ways_prev2 = 1   # only one choice for 1 stepways_prev = 2   # only two choices for two stepsfor i in range(2,n):ways = ways_prev + ways_prev2 # only 2 choices, passing i-1th node or not passing it# passing the i-1th node by doing one step# not passing the i-1th node by doing two steps# so when combined, it will all the possibilities.ways_prev2 = ways_prevways_prev = waysreturn ways

这篇关于Climbing stairs (70)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642231

相关文章

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

70-java write类应用场景

在Java中,我们可以使用java.io包中的FileWriter和BufferedWriter类来写入数据到文件。以下是一个简单的例子,展示了如何使用FileWriter和BufferedWriter来写入数据到文件: import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;pub

代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)

完全背包问题                  和01背包最大区别就是一个物品可以重复放多次,因此遍历空间时可以从前往后。 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt

leetcode#70. Climbing Stairs

题目 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? Note: Given n will be a posi

[Day 70] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈在房地產中的應用 1. 引言 區塊鏈技術的崛起為各行各業帶來了顯著的變革,房地產行業也不例外。區塊鏈提供的去中心化、透明、安全的特性,使其在房地產領域的應用前景廣闊。本文將探討區塊鏈在房地產中的應用,並通過示例代碼展示如何實現相關功能。 2. 區塊鏈在房地產中的應用場景 2.1 資產數字化 傳統的房地產交易涉及繁瑣的文書工作和第三方機構,如地產經紀人和登記機構。區塊鏈可以將房地產資

Axure健康助理小程序原型图70+页,医疗类高保真高交互模板

作品概况 页面数量:共 70+ 页 源文件格式:限 Axure RP 9/10,非app软件无源码 适用领域:医疗健康、健康助理 作品特色 本作品为健康助理小程序的Axure原型设计图,属于医疗健康项目,设计规范内容清晰,高保真高交互,欢迎想了解医疗健康行业的同学观摩学习,希望对你有所帮助。 该产品的定位属于第三方互联网医疗服务平台,致力于为用户提供客观可信赖的医疗信息服务。产品未来所提供

AI预测体彩排3采取888=3策略+和值012路或胆码测试9月2日升级新模型预测第70弹

经过近70期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽可能少的缩少注数。         当然了,经过近70期的观察和内部测试,发现了如果不考虑8码定位,而是重点把大底放在9码定位上

年化从19.1%提升到22.5%,全球大类资产轮动,加上RSRS择时,RSRS性能优化70倍。(附策略源码)

原创内容第638篇,专注量化投资、个人成长与财富自由。 今天优化一下RSRS指标,并刷新一下策略。 大家知道,numpy的rolling apply性能不好,我们来优化一下: import numpy as npfrom numpy.lib.stride_tricks import as_strided as strideddef rolling_window(a: np.array, wi

快递盒检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

快递盒检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio

材料表面缺陷检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

材料表面缺陷检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visi