- 博客(4)
- 收藏
- 关注
原创 摊还分析,核算法与势能法
为什么我们需要摊还分析上篇文章我们提到了算法的时间复杂度分析,给定输入规模,我们分析出算法的耗时,但是这样够了吗?有时输入规模不是一个静态的值,可能输入是一系列操作,比如在这棵树里先插入结点,再做一个查找,再删除最小值,再与另一棵树合并。(插入,查找,删除最小值,合并)就是一个输入的操作序列。为了对这类操作序列耗时进行分析,我们引入了摊还分析:n个操作的总耗时除以n。看到这儿你可能会想,这...
2018-12-19 00:54:21 2932 2
原创 时间复杂度的定义,记号以及几种计算方法
时间复杂度在关心些什么如果接触过算法,那么对于算法的时间复杂度分析一定不陌生,因为时间复杂度是算法优劣的一个重要评价标准。对于一个算法,我们不光关心它在某个规模输入的情况下耗时多少,我们更关心的是,当输入规模疯狂增长的时候,算法耗时增加多少,是按线性形式增加的?指数增加的?对数形式增加的?比如当你的算法接收的输入规模从k个数变到nk个数时,你的耗时是增加了n倍(线性速度增加)?还是增加了n2倍...
2018-12-17 12:46:40 8265 2
原创 二叉树的中序遍历,每层遍历,以及Z字形遍历
leetcode中,二叉树也是一块重点,对于树结构衍生出的问题,一般用递归的方法会比较多二叉树的中序遍历对于二叉树的前序遍历,就是左-根-右这种遍历顺序。有递归和非递归写法:非递归就用栈来实现 res, stack = [], [] while True: while root: stack.append...
2018-12-02 11:49:26 745
原创 2 sum, 3 sum, 4sum以及python collections.Counter
最近的文章都是有关面试最常出到的100题许多面试好像都喜欢问这三兄弟。2 sum给个列表,和target,返回列表中两个数加起来等于这个target的index举例:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].新建一个空字典,遍历一边列表,如果...
2018-12-01 07:27:14 865
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人