2020-3-14
300.最长上升子序列
✒解题思路:
- DP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20class Solution {
public int lengthOfLIS(int[] nums) {
int len = nums.length;
if (len < 2) {
return len;
}
int[] dp = new int[len];
Arrays.fill(dp, 1);//初始化为1
int maxLenghth = 1;
for (int i = 1; i < len; i++) {
for (int j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
dp[i] = Math.max(dp[j] + 1, dp[i]);
}
}
maxLenghth = Math.max(dp[i], maxLenghth);
}
return maxLenghth;
}
}
108.将有序数组转换为二叉搜索树
✒解题思路:
- 递归的方式,先创建根节点,在创建左节点,右节点。
1 | /** |
110.平衡二叉树
✒解题思路:
- 递归遍历每个节点,获取左右节点的深度,比较深度之差。
1 | /** |
112.路径总和
✒解题思路:
- 递归遍历根节点,当该节点不是叶子节点时,分别向左右递归,当左右节点为空时判断sum是否为零。
1 | /** |
257.二叉树的所有路径
✒解题思路:
- 官方:最直观的方法是使用递归。在递归遍历二叉树时,需要考虑当前的节点和它的孩子节点。如果当前的节点不是叶子节点,则在当前的路径末尾添加该节点,并递归遍历该节点的每一个孩子节点。如果当前的节点是叶子节点,则在当前的路径末尾添加该节点后,就得到了一条从根节点到叶子节点的路径,可以把该路径加入到答案中。
1 | /** |
559.N叉树的最大深度
✒解题思路:
- 遍历各子节点即可,与二叉树思路相同
1 | /* |
872.叶子相似的树
✒解题思路:
- 用list将树的叶子节点保存起来,再进行比较
1 | /** |