class Solution { public: int jumpFloor(int num) { //方法1.递归解决 if(num == 1){ return 1; }else if( num == 2){ return 2; }else{ return jumpFloor(num-1) + jumpFloor(num-2); } } };
思路2代码
1 2 3 4 5 6 7 8 9 10 11
class Solution { public: int jumpFloor(int num) { // 方法2: 数组保存 vector<int> a={0,1,2}; for(int i = 3; i<=num; i++){ a.push_back(a[i-1]+a[i-2]); } return a[num]; } };
时间复杂度为O(n),空间复杂度为O(n)
思路3代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
class Solution { public: int jumpFloor(int num) { // 方法3: int first = 1, second = 2; if(num == 1) return 1; if(num == 2) return 2; for(int i = 2; i < num; i++){ int temp = first + second; first = second; second = temp; } return second; } };