力扣题目
解题思路
java代码
力扣题目:
今天的有氧运动训练内容是在一个长条形的平台上跳跃。平台有 num
个小格子,每次可以选择跳 一个格子 或者 两个格子。请返回在训练过程中,学员们共有多少种不同的跳跃方式。
结果可能过大,因此结果需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
输入:n = 2 输出:2
示例 2:
输入:n = 5 输出:8
解题思路:
算法原理:
这是一个通过迭代计算斐波那契数列特定项的算法。
思路:
使用两个变量 a
和 b
来表示斐波那契数列中的相邻两项。在每次循环中,计算当前两项之和 sum
,然后更新 a
和 b
的值,a
变为原来的 b
,b
变为新计算的 sum
。经过 num
次循环后,返回 a
的值。
代码分析:
在 trainWays
方法中,通过一个简单的循环实现了上述逻辑。
时间复杂度:O(num),其中 num
是输入的参数,表示循环的次数。
空间复杂度:O(1),只使用了固定的几个变量,空间开销恒定。
java代码:
package org.example;
public class LCR127 {
public static void main(String[] args) {
System.out.println(new LCR127().trainWays(5));
}
public int trainWays(int num) {
int a = 1, b = 1, sum;
for(int i = 0; i < num; i++){
sum = (a + b) % 1000000007;
a = b;
b = sum;
}
return a;
}
}
更多详细内容同步到公众号,感谢大家的支持!
每天都会给刷算法的小伙伴推送明日一题,并且没有任何收费项