OJ Tricks

这里主要是一些题目的技巧总结。

min max heap usage

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值
排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之
后中间两个数的平均值。


一个大堆,一个小堆,保证 大堆的头永远比小堆的头最小,并且两者数量接近(差一,或者相
等)保存4个变量,两个堆的数量,以及堆的顶值,

min_size, max_size, min_top. max_top
当获得一个新的数,如果小于 min_top, 就放进 max_heap
中,但是可以判断一下和 max_top 的大小,这样可以更新它

然后在做判断, 是否 max_size > min_size, 
是的话,就把 max_top 放入 min_heap 中,它当然是最小的,所以可以更新

这时候,我们再更新, max_size, min_size, 这样即可保证两者数量接近
并且俩个堆也一定是连续的

max_top|   |min_top 两者构成的区间,在不停的移动~~ 两堆数量相近  

DP

DP 很重要的思想在于,从 N -> N+1 或者能从 N -> N-1 ,另外 DP 代表的就是计算机思维,这是非常重要的,计算机的思维也是迭代的思维,这种思想其实非常的重要,我们永远都不会去寻找一个精确值,而是不断的从上一次值来推出下一个更加合适的值~

总结一下,一般只是最优解,可以填表,但是不一定~ 我觉得两者结合应该是最舒服的吧。

Last updated