您的位置:首页 > 其它

每日打卡:爬楼梯

2020-07-18 04:22 106 查看

打卡:爬楼梯

心情

周末观影《她比烟花寂寞》。导演先叙述姐姐的故事,观众视角先入为主地给妹妹贴了个自私狂妄的标签。当镜头转到妹妹的世界时,才发现她是如此的令人心疼。她的一生,“先成为不朽,然后死去!”

读题

leetcode: 70. 爬楼梯

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

测试用例:
输入: 3
输出: 3

注意:给定 n 是一个正整数。

列了前几阶,这不就是斐波那契数列嘛。
反过来想,第n阶的爬法:第n-1阶+1 和 第n-2阶+2,f(n)=f(n-1)+f(n-2)

思路

做个循环,从第一阶第二阶开始递推,返回第n阶的值

实现

public int climbStairs(int n) {
int[] nums = new int[n+1];
//第0阶-从后向前假设出来的
nums[0] = 1;
//第1阶-按照可能性算出来的
nums[1] = 1;
for (int i = 2; i < n+1; i++) {
//最后一阶=倒数第二阶+倒数第三阶    的所有方法
nums[i] = nums[i-1] + nums[i-2];
}
return nums[n];
}

看起来就很简单嘛~

提交


这内存消耗的排名,看来数组都不能用了呀。

好吧,这内存消耗的排名我也是绝望了。

标答

public List<List<Integer>> threeSum(int[] nums) {
public int climbStairs(int n) {
double sqrt5 = Math.sqrt(5);
double fibn = Math.pow((1 + sqrt5) / 2, n + 1) - Math.pow((1 - sqrt5) / 2, n + 1);
return (int)(fibn / sqrt5);
}

官方题解 直接用斐波那契数列的公式实现了。本想着把高数捡起来,才发现早已还给老师了。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: