update dp and tree
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
4. 没有键值(key)相等的节点
|
||||
|
||||
|
||||
有序的二叉查找树,中序遍历结果是递增的。
|
||||
有序的二叉查找树,中序遍历结果是递增的。 `左小右大`
|
||||
|
||||
|
||||
```
|
||||
|
||||
@@ -24,21 +24,22 @@ DP通常基于一个递推公式及一个(或多个)初始状态,当前子问
|
||||
* Fibonacci数列 [代码参考这里 递归](./递归.md)
|
||||
* 凑零钱问题
|
||||
* 股票问题 [代码参考这里](https://github.com/nonstriater/deep-in-java/blob/master/src/main/java/com/nonstriater/deepinjava/algo/list/stock/BestChance.java)
|
||||
* 二叉树的最近公共祖先 [代码参考这里](https://github.com/nonstriater/deep-in-java/blob/master/src/main/java/com/nonstriater/deepinjava/algo/tree/CommonParent.java)
|
||||
* 链表翻转 [代码参考这里](https://github.com/nonstriater/deep-in-java/blob/master/src/main/java/com/nonstriater/deepinjava/algo/link/ReverseLink.java)
|
||||
* 接雨水问题
|
||||
* 打家劫舍问题 : num[i] 代表第i个房子中的现金数目,从房子中取钱的最大数目,约束是相邻房子的钱不能同时取出
|
||||
* 接雨水问题 :
|
||||
* 青蛙跳阶问题: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 10 级的台阶总共有多少种跳法。
|
||||
* 最小编辑距离
|
||||
* 最长递增子序列 (LIS Longest Increasing Subsequence)
|
||||
* 最长递增子序列 (LIS Longest Increasing Subsequence),如`【5,6,7,3,2,8】` 最长子序列 `【5,6,7,8】`, 输出4
|
||||
* 最大子数组和
|
||||
* 最长公共子序列 (LIS Longest public Subsequence)
|
||||
* 最长回文子序列 (LIS Longest public Subsequence)
|
||||
* 0-1 背包问题
|
||||
|
||||
|
||||
|
||||
[更多动态规划案例代码实现参考deep-in-java])(https://github.com/nonstriater/deep-in-java/tree/master/src/main/java/com/nonstriater/deepinjava/algo/framework/dynamic)
|
||||
|
||||
青蛙跳阶问题
|
||||
|
||||
```
|
||||
# 青蛙跳阶问题
|
||||
想跳到第10级台阶,要么是先跳到第9级,然后再跳1级台阶上去;要么是先跳到第8级,然后一次迈2级台阶上去。
|
||||
同理,要想跳到第9级台阶,要么是先跳到第8级,然后再跳1级台阶上去;要么是先跳到第7级,然后一次迈2级台阶上去。
|
||||
要想跳到第8级台阶,要么是先跳到第7级,然后再跳1级台阶上去;要么是先跳到第6级,然后一次迈2级台阶上去
|
||||
@@ -53,6 +54,10 @@ DP通常基于一个递推公式及一个(或多个)初始状态,当前子问
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### DP VS 分治法
|
||||
|
||||
与[分治法](分治算法.md)不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。
|
||||
@@ -93,7 +98,7 @@ for 状态1 in 状态1的所有取值:
|
||||
|
||||
## 凑零钱问题
|
||||
|
||||
凑零钱问题[视频解读参考这里]()
|
||||
凑零钱问题[视频解读参考这里](https://www.ixigua.com/6881883015832666635?wid_try=1)
|
||||
|
||||
如果使用贪心策略,并不能得到最优解。
|
||||
|
||||
|
||||
@@ -3,13 +3,17 @@
|
||||
不追求最优解,只找到满意解。
|
||||
|
||||
|
||||
#### 赫夫曼编码
|
||||
|
||||
|
||||
|
||||
#### 其它案例
|
||||
|
||||
找回零钱问题
|
||||
装箱问题
|
||||
* 跳跃游戏
|
||||
* 射击气球
|
||||
* 装箱问题
|
||||
|
||||
|
||||
|
||||
## 赫夫曼编码
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
递归运行效率较低,因为有函数调用的开销,递归多次也可能造成栈溢出。
|
||||
|
||||
|
||||
### 递归公式
|
||||
|
||||
[快排](../6%20Sort/README.md)
|
||||
@@ -72,11 +73,12 @@ void traverse(TreeNode root) {
|
||||
|
||||
### 其它案例
|
||||
|
||||
* 斐波那契数列
|
||||
* 阶乘计算
|
||||
* 梵塔问题 (三根针1,2,3表示,1号从小到大n个盘子,先要都移到3号上,不能出现大盘压小盘,找出移动次数最少的方案)
|
||||
* 快速排序
|
||||
* 很多树算法都是递归思想实现
|
||||
|
||||
* 链表翻转
|
||||
* 很多树算法都是递归思想实现, 如 二叉树的最近公共祖先
|
||||
* 梵塔问题 (三根针1,2,3表示,1号从小到大n个盘子,先要都移到3号上,不能出现大盘压小盘,找出移动次数最少的方案)
|
||||
|
||||
|
||||
## 斐波那契数列
|
||||
@@ -196,6 +198,44 @@ public static LinkedNode mergeSeqLink(LinkedNode l1, LinkedNode l2){
|
||||
|
||||
|
||||
|
||||
## 链表翻转
|
||||
|
||||
|
||||
链表翻转 [代码参考这里](https://github.com/nonstriater/deep-in-java/blob/master/src/main/java/com/nonstriater/deepinjava/algo/link/ReverseLink.java)
|
||||
|
||||
|
||||
```Java
|
||||
//翻转链表前n个节点
|
||||
static LinkedNode tmp;//需要一个外部的临时变量
|
||||
public static LinkedNode reverseN(LinkedNode head, int n){
|
||||
//LinkedNode tmp = null;
|
||||
if (n == 1) {
|
||||
tmp = head.next;
|
||||
return head;
|
||||
}
|
||||
|
||||
LinkedNode tail = reverseN(head.next, n-1);
|
||||
|
||||
head.next.next = head; //后n-1个节点 与 第 1 个节点 指向 翻转
|
||||
head.next = tmp;
|
||||
|
||||
return tail;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 二叉树的最近公共祖先
|
||||
|
||||
二叉树的最近公共祖先 [代码参考这里](https://github.com/nonstriater/deep-in-java/blob/master/src/main/java/com/nonstriater/deepinjava/algo/tree/CommonParent.java)
|
||||
|
||||
|
||||
```Java
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -80,8 +80,6 @@ int fib(int n) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 递减数列左移后的数组中找数
|
||||
|
||||
一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}
|
||||
|
||||
@@ -66,6 +66,12 @@
|
||||
|
||||
|
||||
|
||||
## 完全二叉树的节点个数
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 判断整数序列是不是二元查找树的后序遍历结果
|
||||
|
||||
|
||||
Reference in New Issue
Block a user