动态规划-子串子序列类型

定义

根据 Leetcode 的习惯,子序列(subsequence)不必连续,子数组(subarray)或子字符串(substring)必须连续。

动态规划中,子串子序列的问题大概分为如下几种:

阅读更多

排列-组合-子集算法总结

概念

组合、排列、子集是 leetcode 中比较常见的题目系列,主要区别在于:

名称 概念 示例题目
排列 每项结果有序,即[1,2] 与 [2,1]是两个结果 46. 全排列47. 全排列 II
组合 每项结果无序,即[1,2]与[2,1]是一个结果 39. 组合总和216. 组合总和 III40. 组合总和 II77. 组合
子集 与组合类似,但会有额外的限制,比如数量等 78. 子集90. 子集 II

排列与组合

阅读更多

二叉树总结

基本概念

二叉树最重要的概念应该是:前序遍历、中序遍历、后续遍历 了。

  • 前序遍历:根节点->左子树->右子树(根->左->右)
  • 中序遍历:左子树->根节点->右子树(左->根->右)
  • 后序遍历:左子树->右子树->根节点(左->右->根)
  • 层序遍历: 从上至下、从左至右层次进行,借助队列实现。
阅读更多

算法实验(二)

任务调度问题:在单处理器上具有期限和惩罚的单位时间任务调度问题;平衡树问题:实现3种树中的两种:红黑树,AVL树,Treap树。


阅读更多