File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package Week_04 .id_18 ;
2+
3+ /**
4+ * @author LiveForExperience
5+ * @date 2019/6/27 17:48
6+ */
7+ public class LeetCode_70_18 {
8+ public int climbStairs (int n ) {
9+ return climbStairs (n , new int [n + 1 ]);
10+ }
11+
12+ private int climbStairs (int n , int [] nums ) {
13+ if (n <= 2 ) {
14+ return n ;
15+ }
16+
17+ if (nums [n ] > 0 ) {
18+ return nums [n ];
19+ }
20+
21+ int num = climbStairs (n - 1 , nums ) + climbStairs (n - 2 , nums );
22+ nums [n ] = num ;
23+
24+ return num ;
25+ }
26+ }
Original file line number Diff line number Diff line change @@ -440,4 +440,46 @@ class Solution {
440440}
441441```
442442### 收获
443- 熟悉和练习了回溯算法
443+ 熟悉和练习了回溯算法
444+ ## LeetCode_70_爬楼梯
445+ ### 题目
446+
447+ ### 失败解法
448+ #### 思路
449+ 使用递归的方法,和之前做的一个求斐波那契数列的题目类似,代码和思路都很直观、简单,但超时了。
450+ 时间复杂度:O(2^n)
451+ #### 代码
452+ ``` java
453+ class Solution {
454+ public int climbStairs (int n ) {
455+ return n <= 2 ? n : climbStairs(n - 1 ) + climbStairs(n - 2 );
456+ }
457+ }
458+ ```
459+ ### 解法一
460+ #### 思路
461+ 求助国内站的官方解法二,其对解法一(思路和我的失败解法类似)进行了优化,用到了记忆化递归。因为每次下钻的过程中,会有重复的步数,把已经计算过的部署放在数组里记录,就可以省去很多的步骤。
462+ #### 代码
463+ ``` java
464+ class Solution {
465+ public int climbStairs (int n ) {
466+ return climbStairs(n, new int [n + 1 ]);
467+ }
468+
469+ private int climbStairs (int n , int [] nums ) {
470+ if (n <= 2 ) {
471+ return n;
472+ }
473+
474+ if (nums[n] > 0 ) {
475+ return nums[n];
476+ }
477+
478+ int num = climbStairs(n - 1 , nums) + climbStairs(n - 2 , nums);
479+ nums[n] = num;
480+
481+ return num;
482+ }
483+ }
484+ ```
485+ ### 收获
You can’t perform that action at this time.
0 commit comments