算法
cfy_wyl
搬砖使我快乐 搬砖让我更有钱
展开
-
树、二叉树、二叉搜索树的实现和特性
树: 二叉树: 图:形成环的 树和图的区别:是否有环(没有环的图就是树) 二叉搜索树: 时间复杂度(log2n) 删除: a、叶子节点的删除 b、根节点或者某子树的根节点(一般情况下找右子树中第一个和此节点相近的节点替换) eg:删65这个节点 继续,删除41这个节点 下边为特殊情况:时间复杂度不是O(logn), 而是O(N)~ 相当于链表 树节点的定义: ...原创 2020-05-18 14:46:28 · 259 阅读 · 0 评论 -
数组、链表、跳表的基本实现和特性
数组: 链表: 跳表:《redis里用的最多》 总结: 为啥 redis 使用跳表(skiplist)而不是使用 red-black? 1 skiplist的复杂度和红黑树一样,而且实现起来更简单。 2 在并发环境下skiplist有另外一个优势,红黑树在插入和删除的时候可能需要做一些rebalance的操作,这样的操作可能会涉及到整个树的其他部分,而skiplist的操作显然更加局部性一些,锁需要盯住的节点更少,因此在这样的情况下性能好一些。 参考:...原创 2020-05-15 17:16:11 · 201 阅读 · 0 评论 -
时间复杂度和空进复杂度分析
例如 O(n²)、O(n)、O(1)、O(nlogn) eg: 以上,O(1):永远只执行一次; 复杂情况:递归 (了解执行的次数) 面试中不能这么写,大量冗余的计算,2^n; 总结: l 思考题: 前三个:每个节点都被访问一次且只有一次所以是O(N),最后一个是O(logn) 空间复杂度: leetcode经典的爬楼梯问题:三种情况分析 https://leetcode-cn.com/problems/climbing-stairs...原创 2020-05-13 12:28:01 · 163 阅读 · 0 评论