动态规划:一个数有有几种拆法(分盘子问题)

作者 Tony   2017.04.04

一个数如3,可以拆成 2+1,1+1,3 这 3 种拆法,给一个数 n,求有几种拆法。

动态规划:最长公共子序列 (LCS)

作者 Tony   2017.03.19

一个字符串 S,去掉零个或者多个元素所剩下的子串称为 S 的子序列。最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不...

堆排序:数据流中的中位数

作者 Tony   2017.02.03

动态的插入数据,取中位数,直接使用 C++ 中的堆。使用两个堆,一个堆的数均小于另一个,最终中位数就在两个堆的堆顶之中。

C++ STL vector map deque string 用法

作者 Tony   2017.01.30

记录下用法算了,可怕的 C++。

正则表达式匹配

作者 Tony   2017.01.28

实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配...

归并排序:数组中的逆序对、O(n) 方法

作者 Tony   2017.01.23

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取...

快速排序:求最小的 k 个数

作者 Tony   2017.01.21

可以考虑使用堆,这里用类似快速排序的思想,如果选取枢纽随机化,可以做到平均 O(n) 的时间复杂度。

二叉树:层次遍历

作者 Tony   2017.01.17

我们可以设置两个队列,想象一下队列的特点,就是先进先出,首先把第0层保存在一个队列中,然后按节点访问,并把已经访问节点的左右孩子节点放在第二个队列中,当第一...