JZ09-变态跳台阶
跳台阶扩展问题
https://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
class Solution {
//递推公式+递归 f(n) = 2 * f(n-1)
public int JumpFloorII(int target) {
if(target<0){
return -1;
}
if(target <= 2){
return target;
}
return 2*JumpFloorII(target - 1);
}
//递推公式 + 变量
public int JumpFloorII2(int target) {
if(target<0){
return -1;
}
if(target <= 2){
return target;
}
int b = 0;
int a = 2;
for (int i = 2; i < target; i++) {
b = a << 1;
a = b;
}
return b;
}
//动态规划。开辟数组
public int JumpFloorII4(int target) {
if (target < 0) {
return -1;
}
if (target <= 2) { //测试用例如果输入1,2直接返回
return target;
}
int[] temp = new int[target + 1];
temp[0] = 1; //0个台阶,可以跳0阶 也算一种情况
temp[1] = 1;
temp[2] = 2;
for (int i = 3; i <= target; i++) {
for (int j = 0; j < i; j++) {
temp[i] += temp[j]; //把i前面的全加起来等于i
}
}
return temp[target]; //0-target 数组长度为target+1
}
//利用数组
public int JumpFloorII3(int target) {
if(target<0){
return -1;
}
if(target <= 2){
return target;
}
int b = 0;
int a = 2;
for (int i = 2; i < target; i++) {
b = a << 1;
a = b;
}
return b;
}
}
正浩创新EcoFlow公司福利 647人发布
查看5道真题和解析