剑指 Offer 10- II. 青蛙跳台阶问题 -递归法和数学递推法
剑指 Offer 10- II. 青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
输入:n = 2
输出:2
示例 2:
输入:n = 7
输出:21
示例 3:
输入:n = 0
输出:1
递归方法如下所示
void f(int a,int n,int *sum){if(a<n){f(a+1,n,sum);f(a+2,n,sum);}if(a==n){(*sum)++;}
}int numWays(int n){int *sum=(int *)malloc(sizeof(int));*sum=0;int a=0;f(a,n,sum);return *sum;}
其实这题本质上是一个斐波那契数列,我们可以递推该题,那么代码如下:
/*动态规划:把问题转化为求斐波那契数列第 n 项的值
用纸写一下结果,就能找出规律,每种情况的答案是前面两种情况的答案之和。所以,这就是一个斐波那契数列
因此用动态规划的方法即可,代码如下 非常简单。*/
int numWays(int n){int dq[n+1];int i;for(i=0;i<=n;i++){if(i==0)dq[i]=1;else if(i==1)dq[i]=1;elsedq[i]=((dq[i-1]+dq[i-2])%1000000007);}return dq[n];}
剑指 Offer 10- II. 青蛙跳台阶问题 -递归法和数学递推法相关推荐
- 【剑指offer】10-II.青蛙跳台阶问题
Python3 先简单列举一些台阶级数,看看有无数学规律: 当台阶为0级时,有1种跳法: 当台阶为1级时,有1种跳法: 当台阶为2级时,有2种跳法: 当台阶为3级时,有3种跳法: ...
- 剑指offer:10-II.青蛙跳台阶问题
10-II-青蛙跳台阶问题 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ ...
- 剑指offer 动画图解 | 变态跳台阶
文章目录 题目描述 解题思路 算法 总结规律 算法代码 算法效率 通过刷题剑指offer,可以有效提升面试成功的概率,这是因为技术岗位的面试总是离不开算法题.如果想要在算法题方面表现得好的话,刷题是唯 ...
- 【剑指offer】_06 变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路 链接:https://www.nowcoder.com/questi ...
- 【剑指Offer】07变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 时间限制:1秒:空间限制:32768K 解题思路 可利用数学归纳法找规律: 当 ...
- 剑指offer面试题[9-1]-跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析:如果台阶数为0,就有0种跳法:如果台阶数为1,那么就有1种跳法:如果台阶数为2,那么就有2种 ...
- 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串
剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...
- 剑指 Offer 53 - II. 0~n-1中缺失的数字(二分查找)
/*** 剑指 Offer 53 - II. 0-n-1中缺失的数字* @author wsq* @date 2020/10/08一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在 ...
- LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列
剑指 Offer 57 - II. 和为s的连续正数序列 Ideas 区间问题首先想到用双指针. 因为这题没有给定数组,其实相当于就是一个从1到target的数组,然后直接套双指针的模板就可以了. 双 ...
最新文章
- java单链表 提供增删改查_java实现单链表增删改查的实例代码详解
- 【HDU - 1540】 Tunnel Warfare (线段树进阶操作 区间合并+ 单点更新+ 最长覆盖区间查询 )
- python闭包详解函数_详解python函数的闭包问题(内部函数与外部函数详述)
- Intel Core Enhanced Core架构/微架构/流水线 (1) - 特性概述
- 【实用工具】linux Can‘t bind address: Address already in use
- 应用栈解决迷宫问题的C语言实现
- hiho一下第91周《Events Arrangement》(前半部分)
- 0.618 与 1.414
- docker java mysql_docker搭建tomcat+mysql容器并部署Java系统
- Hadoop - 任务调度系统比较
- linux 管道 线程,linux中通过管道实现qq的聊天功能,用到了线程
- win10 安装c语言无法启动,win10开机出现0xc0000098无法启动简单解决方法
- 数值分析笔记 第一章 数值分析与科学计算引论
- C/C++ Dev-cpp 5.4.0下载安装包,百度网盘
- java 200以内的素数_java200以内的素数每行每列7个代码怎么写?
- 自动弹出 微信授权登录窗口
- 20135323符运锦---信息安全系统设计基础第一周学习总结
- 天翼云流量服务器,天翼云CDN常见问题解答
- 【es】elasticsearch生产数据备份和恢复方案
- android 动态替换logo