力扣70.爬楼梯
class Solution {public int climbStairs(int n) {return dfs(n);}//递归 //注意每次你可以爬 1 或 2 个台阶//如果最后一步是1 就先爬到n-1 把它缩小成0-n-1的范围//如果最后一步是2 就先爬到n-2 把它缩小成0-n-2的范围 private int dfs(int i){if(i <= 1){return 1;}return dfs(i-1) +dfs(i - 2);}
}
记忆搜索法+递归
class Solution {public int climbStairs(int n) {int[] memo = new int[n + 1];//定义memo数组记录返回值return dfs(n,memo);}private int dfs(int i, int [] memo){if(i<=1){return 1;}//如果一个状态不是第一次遇到(memo中保存的结果不等于 memo 的初始值),//那么可以直接返回 memo 中保存的结果。if(memo[i] != 0){return memo[i];}//如果一个状态(递归入参)是第一次遇到,//那么可以在返回前,把状态及其结果记到一个 memo 数组中。return memo[i] = dfs(i-1,memo) + dfs(i-2,memo);}
}
力扣118. 杨辉三角
class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> aa = new ArrayList<List<Integer>>();//泛型for(int i=0; i<numRows; i++){//行List<Integer> row = new ArrayList<Integer>();//泛型for(int j=0; j<=i; j++){//列if(j == 0 || j == i){//最左边这列和最右边这列都是1row.add(1);}else{row.add(aa.get(i-1).get(j-1) + aa.get(i-1).get(j));}}aa.add(row);}return aa;}
}
本文由mdnice多平台发布