算法-递归问题

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

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

 

推荐这些技术文章:

问一个算法问题

问题
语言不限,代码执行越快越好,求x*x最近接近n的x(n是double,x可以是正整数/负整数或0,不能用Sqrt)

最佳回答
n,x的范围?以及时间要求?
不管了先上一个最初始的代码

#include <iostream>

using namespace std;

int x;
double n;
int main...

算法-和差问题

左神 中级提升班 2-3 给定一个数组arr,求差值为k的数字对,结果去重 import java.util.*; class Solution { public List<List<Integer>> f(int[] arr, int k) { List<List<Integer>> ans = new ArrayLi...

递归和递推(二)

AcWing1209.带分数
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

const int N = 10;
bool used[N];
int n;
int cnt;
bool st[N], bac...

算法-均值问题

左神 中级提升班 2-4 题目 给一个包含n个整数元素的集合a,一个包含m个整数元素的集合b 定义magic操作为,从一个集合中取出一个元素,放到另一个集合里,且操作后两个集合的平均值都大于操作前 返回最多可以进行多少次magic操作 注意以下两点 不可以把一个集合的元素取空,这样就没有平均值了 值为x的元素从集合b取出放入集合a,但集合a中已经有值为x的元素,则a的平均值不变(因为集合元素不重...

数据结构与算法之递归

用循环实现阶乘
阶乘的规则就是输入数字n计算乘积.例如n为3计算结果为1*2*3

public static long f1(long n) {
long sum = 1;
for (long i = n; i >= 1; i--) {
sum *= i;
}
return sum;
}

递...

算法-括号问题

左神 中级提升班2-2 给你一个字符串,可以在任意位置添加括号,将其转化为一个完整的字符串,返回至少需要添加多少个括号 ()()(())是完整的   ()(是不完整的 最小子结构一定是() class Solution { public int f(String s) { char[] chs = s.toCharArray(); i...

递归 二叉树的最近公共祖先

https://leetcode-cn.com/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/

func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
if root == nil {
return nil
}
if root.V...

13.回顾递归调用机制

1.打印问题
public static void test(int n) {
if (n > 2) {
test(n - 1);
} //else {
System.out.println("n=" + n);
// }
}
2.阶乘问题
public static int factorial(int n) {
if (n == 1) { ...

《算法图解》第三章 递归

 
 
 1、递归
(1)调用函数自身
(2)每个递归函数都有两个条件:基线条件(base case:函数不再调用自己,避免无限循环【通常是数组为空或者只包含一个元素】)和递归条件(recursive case:函数调用自己)

def countdown(i):
print(i)
# 基线条件
if i<=0:
re...

[算法]树状数组

树状数组
树状数组怎么来滴
所有的整数都可以表示成2的幂和,我们也可以把一串序列表示成一系列子序列的和。采用这个想法,我们可将一个前缀和划分成多个子序列的和,而划分的方法与数的2的幂和具有极其相似的方式。
一方面,子序列的个数是其二进制表示中1的个数,
另一方面,子序列代表的f[i]的个数也是2的幂

树状数组用在什么地方呢
常用于区间和查询、单点修改
树状数组的模板
class NumArra...

文章标题:算法-递归问题
文章链接:https://www.dianjilingqu.com/2075.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>