左神 中级提升班2-1
n表示二叉树节点的个数
返回能够形成多少种不同的二叉树的结构
分析
解决一个原子问题
import java.util.Arrays; class Solution { public long[] cache; /** * @param n 二叉树节点的个数 * @return 能够形成多少种不同的二叉树结构 */ public long f(int n) { cache = new long[n]; Arrays.fill(cache, -1); return process(n); } private long process(int n) { if (cache[n] != -1) { return cache[n]; } if (n == 0) { cache[0] = 0; return 0; } if (n == 1) { cache[1] = 1; return 1; } if (n == 2) { cache[2] = 2; return 2; } long ans = 0; for (int i = 0; i < n; i++) { ans += f(i) * f(n - i - 1); } cache[n] = ans; return ans; } }
左神 中级提升班 3-4
leetcode 91.解码方法
将给定的数转换为字符串,原则如下:1对应a,...,26对应z,例如12258可以转换为"abbeh" "aveg" "abyh" "lbeh" "lyh"
编写一个函数,返回可以转换的不同字符串的个数