101. 对称二叉树 描述: 思路: 递归。考虑左子树的最右节点和右子树的最左节点对称。 102. 二叉树的层序遍历 描述: 思路:递归。维护一个List<List<Node>> (List.get(迭代次数).add(xxxx)) 103. 二叉树的锯齿形层次遍历 描述: 思路:递归。先右再左。 ...
分类:
其他好文 时间:
2020-07-05 22:45:46
阅读次数:
58
1.回溯法 回溯法的基础题目类型就是子集树和排列树,掌握最基础的模板,那么其它的题目都可以在此上变形得到,子集树即如下图所示: 同一个元素不能被选入多次,子集树的算法模板为 1 void Backtrack(int t) { //t 表示当前是树的第t层,即对集合 S 中的第 t 个元素进行判断 2 ...
分类:
其他好文 时间:
2020-07-05 19:32:17
阅读次数:
72
维特比算法 一种动态规划算法(动态规划 Dynamic Programming,是运筹学的一个分支,是求解决策过程最优化的过程。) 用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列 特别是在马尔可夫信息源上下文和隐马尔可夫模型中 ...
分类:
编程语言 时间:
2020-07-05 19:21:28
阅读次数:
67
Algorithm: 70: Climbing Stairs (Easy) 167: Two Sum II - Input array is sorted (Easy) 120: Triangle (Medium) 经典动态规划,状态转移方程是自底向上,row[i] = row[i] + min(p ...
分类:
其他好文 时间:
2020-07-05 17:18:19
阅读次数:
70
原型:最长上升子序列 分析 状态表示:所有以a[i]结尾的严格单调上升的子序列的Max长度 状态划分依据:以最后一个不同的点 状态方程:dp[i] = max(dp[i], dp[j] + 1), j必须要小于i for(int i = 1; i <= n; i++) { dp[i] = 1; fo ...
分类:
其他好文 时间:
2020-07-05 17:12:16
阅读次数:
54
题目描述: 方法一:动态规划 O(n) O(n) class Solution: def longestValidParentheses(self, s: str) -> int: n = len(s) if n==0:return 0 dp = [0]*n for i in range(len(s ...
分类:
其他好文 时间:
2020-07-05 00:18:58
阅读次数:
66
考虑用一个二维dp数组表示所需的最小操作次数。 dp[i][j]表示将word1的前i个字符转换为word2的前j个字符所需要的最少操作次数。 由于操作的顺序对于最后操作的结果没有影响,所以我们假设操作总是从word1的前面字符操作到word1的后面字符。 如果word1的第i个字符等于word2的 ...
分类:
其他好文 时间:
2020-07-04 20:50:44
阅读次数:
53
《算法导论》第十五章 动态规划首先讨论了钢条切割问题,下面做个简单的总结: 一、递归 # 价格数组 Ap=[0,1,5,8,9,10,17,17,20,24,30] def cutrod(n): if n==0: return 0 m = -1 for i in range(1,n+1): t = ...
分类:
编程语言 时间:
2020-07-04 19:03:34
阅读次数:
59
题目信息 时间: 2019-07-03 题目链接:Leetcode tag:动态规划 小根堆 难易程度:中等 题目描述: 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, ...
分类:
其他好文 时间:
2020-07-04 17:19:58
阅读次数:
66
前情摘要:为了研讨图的最短路径问题、动态规划有何区别,昨天抛出一道例题来开展讨论。以下会花费主要篇幅侧重于理论性简述一下两者的区别。 一、图的最短路径问题 在数据结构里有两种类型的:一种是单源的最短路径问题,即从已知的指定节点出发;一种是任意两节点间的最短路径问题,即不明确起始节点,需要求出任意两点 ...
分类:
其他好文 时间:
2020-07-04 01:33:54
阅读次数:
90