0%

二叉树的序列化和反序列化

二叉树记录成文件(一般是字符串形式)的过程叫做序列化,通过文件内容重构出一颗二叉树的过程叫做二叉树的反序列化。

阅读全文 »

给定一个N行2列的二维数组arr,每一个小数组的两个值分别代表一个信封的长和宽,如果信封A的长和宽小于信封B,那么信封A可以放在信封B里,返回信封最多可以嵌套多少层。

阅读全文 »

最长增长子序列

给定一个数组arr,返回arr的最长增长子序列,例,arr = {7,1,9,3,8,19},最长增长子序列为 {1,3,8,19}。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   public static int[] generateLIS (int[] arr,int[] dp) {
int len = 0;
int index = 0;
for (int i = 0;i < dp.length;i ++) {
if (dp[i] > len) {
len = dp[i];
index = i;
}
}
int[] lis = new int[len];
lis[--len] = arr[index];
for (int i = index;i >= 0;i--) {
if (arr[i] < arr[index] && dp[i] == dp[index] - 1) {
lis[--len] = arr[i];
index = i;
}
}
return lis;
}
阅读全文 »

换钱的方法数
给定数组arr,arr中的值都为正数且不重复,每一个值代表一种货币面值,每种面值的货币可使用任意张,再给定一个正数aim,代表要找的钱数,求换钱有多少种方法。

阅读全文 »

给定数组arr,arr中所有的值都为正数且不重复,每个值代表一种面值的货币,每种面的值货币可以使用任意张,再给定一个正数aim,代表要找的钱数,求组成aim的最少货币数。

阅读全文 »

机器人达到指定位置方法数

问题概述:动态规划的题目,假设有N个位置,N大于等于2。开始机器人在其中的某个位置(M位置,M一定是1到N的某一个),机器人可以往左走或往右走,在位置1则只能往右走到位置2,同理在位置N只能往左走到N-1位置。在除了这两个位置的其它位置则可以往左或往右;规定机器人走K步,最终能来到P位置(P也是1到N位置中的一个)的方法有多少种,给定四个参数N、M、K、P,返回方法数。

阅读全文 »