70. Climbing Stairs dynamic programming

2024-05-07 07:58

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

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 positive integer.

首先是递归的算法,但是会超时

int climbStairs(int n) {if (n <= 0)return 0;else if (n == 1)return 1;else if (n == 2)return 2;return climbStairs(n - 1) + climbStairs(n - 2);
}

接着用一个数组存储到第i步有多少种走法,但是这样的空间复杂度为O(n);

int climbStairs(int n) {vector<int>my;if (n <= 0)return 0;else if (n == 1)return 1;else if (n == 2)return 2;my.push_back(0);my.push_back(1);my.push_back(2);for (int i = 3; i <= n; i++){my.push_back(my[i - 1] + my[i - 2]);}return my[n];
}

最后,将空间复杂度降为O(1);

int climbStairs(int n) {if (n == 0)return 0;if (n == 1)return 1;if (n == 2)return 2;int pre = 1, cur = 2, next = 0;for (int i = 3; i <= n; i++){next = pre + cur;pre = cur;cur = next;}return cur;
}

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



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

相关文章

代码随想录训练营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

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间,我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧,并通过对多个噪声帧进行平均得到相应的干净帧。 2、有效的原始视频去噪网络(RViDeNet),通过探

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

【硬刚ES】ES基础(十三)Dynamic Template和Index Template

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。

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

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

Spark动态资源分配-Dynamic Resource Allocation

关键字:spark、资源分配、dynamic resource allocation Spark中,所谓资源单位一般指的是executors,和Yarn中的Containers一样,在Spark On Yarn模式下,通常使用–num-executors来指定Application使用的executors数量,而–executor-memory和–executor-cores分别用来指定每个ex

Nordic Collegiate Programming ContestNCPC 2021

Date:October 9, 2021 Dashboard - 2021-2022 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2021) - Codeforces Problem - C - Codeforces--Customs ControlsProblem - C - Codeforces- 题意:给定一个n个点,m条边

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

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