theshy

博客园 首页 新随笔 联系 订阅 管理

左神 中级提升班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"

编写一个函数,返回可以转换的不同字符串的个数

 

posted on 2022-01-02 19:05  tziSher  阅读(36)  评论(0编辑  收藏  举报