LeetCode刷题集(七)(LeetCode70.爬楼梯)

简介: LeetCode刷题集(七)(LeetCode70.爬楼梯)

学习目标:拿下LeetCode70.爬楼梯

  • 学习完本文章之后拿下LeetCode70题

题目实例:

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

样例1、输入:n = 2

输出:2

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

  1. 1 阶 + 1 阶
  2. 2 阶

样例2、输入:n = 3

输出:3

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

  1. 1 阶 + 1 阶 + 1 阶
  2. 1 阶 + 2 阶
  3. 2 阶 + 1 阶

题目分析:

本题采用画图解释,最初我们定义三个变量,p和q都给0,而r值给1,那么这是为什么呢?

当我们没踏入台阶的时候,我们就假设他为1,也就是f(0) = 1,那么我们走一个台阶是不是也是1个呢?所以是f(1) = 1,当我们走两个台阶的时候是不是就有两种走法了呢?所以是f(2) = 2

从以上的推导我们可以推导出一个公式那就是:f(x) = f(x-1)+f(x-2),继续推导下去,我们发现就跟我们的推导公式是一样滴!!,那么我们是不是应该进入代码的实现的呢?

95c20d3cb589456da76405df11c48fd3.png

dea0b487350f497e910a65773199cb8e.png

在学习的过程中,我们要学会多多的画图,因为画图好让我们更好的理解代码的意思,并且更好的实现我们的代码,我们实现代码的过程中千万不能忘记,过了一段时间要来巩固自己之前所学的知识!!好啦,今天的讲解到此结束啦!

代码产出:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int climbStairs(int n) {
    int q = 0, p = 0, r = 1;
    for (int i = 1; i <= n; i++)
    {
        q = p;
        p = r;
        r = p + q;
    }
    return r;
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int ret = climbStairs(n);
    printf("%d", ret);
  return 0;
}


目录
相关文章
|
2月前
|
机器学习/深度学习 算法
力扣刷题日常(一)
力扣刷题日常(一)
20 2
|
2月前
|
存储 索引
《LeetCode》—— LeetCode刷题日记
《LeetCode》—— LeetCode刷题日记
|
2月前
|
搜索推荐
《LeetCode》——LeetCode刷题日记3
《LeetCode》——LeetCode刷题日记3
|
2月前
|
容器
《LeetCode》——LeetCode刷题日记1
《LeetCode》——LeetCode刷题日记1
|
2月前
|
算法
LeetCode刷题---21.合并两个有序链表(双指针)
LeetCode刷题---21.合并两个有序链表(双指针)
|
2月前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
|
2月前
|
算法 测试技术
LeetCode刷题--- 430. 扁平化多级双向链表(深度优先搜索)
LeetCode刷题--- 430. 扁平化多级双向链表(深度优先搜索)
|
2月前
|
存储
实现单链表的基本操作(力扣、牛客刷题的基础&笔试题常客)
实现单链表的基本操作(力扣、牛客刷题的基础&笔试题常客)
144 38
|
12天前
刷题之Leetcode160题(超级详细)
刷题之Leetcode160题(超级详细)
11 0
|
12天前
刷题之Leetcode206题(超级详细)
刷题之Leetcode206题(超级详细)
22 0
刷题之Leetcode206题(超级详细)

热门文章

最新文章