左神算法课笔记
2019年秋招前的算法复习笔记~
Timothy Cui
这个作者很懒,什么都没留下…
展开
-
第一课:时间复杂度,冒泡排序,选择排序,插入排序,对数器,递归行为,归并排序
左程云算法初级班 第一课时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N))。评价一个算法流程的好坏,先看时间复杂度的指...原创 2019-08-07 10:16:41 · 314 阅读 · 0 评论 -
第二课:荷兰国旗问题,快速排序,堆排序,排序算法的稳定性,桶排序
左程云算法初级班 第二课荷兰国旗问题问题一给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)问题二(荷兰国旗问题)给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复...原创 2019-08-07 10:22:12 · 568 阅读 · 0 评论 -
第三课:队列,栈,矩阵,链表题目
左程云算法初级班 第三课用数组结构实现大小固定的队列和栈数组实现栈:设置一个指针指向栈顶元素(上图中的size);当压入或者弹出元素时,改变指针指向;指针指向数组最后一个元素时,代表栈已被压满。数组实现队列:设置两个指针、一个指向队列第一个元素(上图中的first),一个指向队列最后一个元素(上图中的last);同时设置一个size记录队列中元素个数;每当队列中push入元素时,...原创 2019-08-07 10:38:07 · 230 阅读 · 0 评论 -
第四课:二叉树
左程云算法初级班 第四课实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式上图中,左图为二叉树,右图为遍历结点过程先序遍历:第一次到达结点时输出该节点值;中序遍历:第二次到达结点时输出该节点值;后序遍历:第三次到达结点时输出该节点值;递归方式:对于先序比遍历,先打印当前结点的值,再对该结点的左孩子进行先序遍历,最后对右该结点的孩子进行先序遍历;对于中序比遍历,先对该结点...原创 2019-08-07 15:40:58 · 151 阅读 · 0 评论 -
第五课 哈希函数,哈希表,布隆过滤器,一致性哈希,岛问题,并查集结构
左程云算法初级班 第五课认识哈希函数和哈希表哈希函数的特点:1,相同输入、相同输出;2,不同输入、均匀分布;3,输入域无穷大;4,输出域有限;设计RandomPool结构【题目】 设计一种结构,在该结构中有如下三个功能:insert(key):将某个key加入到该结构,做到不重复加入。delete(key):将原本在结构中的某个key移除。 getRandom():等概率...原创 2019-08-07 17:33:04 · 300 阅读 · 0 评论