自从上一次写完红黑树入门已经过去一个多月了……当时天真的我觉得就算再难只要花个一个下午就可以把删除操作搞懂,然而……………… 阅前须知 但是我现在在这里申明一点,其实红黑树的删除操作也算不上太难,有一点是因为分类情况太多了。而我迟迟没有理解的一个主要原因在于 我们讨论的删除节点并不是我们在红黑树删除操作中传入的删除的节点,而是被删除节点的替换节点 因为在二叉查找树的删除过程中,被删除的节点实际上会被一个前驱最大节点或者是后继最小节点来替代。 而我们在红黑树中,可以在替换节点的同时,替换节点的颜色改成删除节点的颜色,那么我们的修复目标一下子缩小到了几乎是最下面的子树层,并且对删除节点处的性质并没有任何改变。实在是妙极! 另外感谢这篇文章,我是通过这个博文学习的,并且图片也来自这个博客,写的很好,推荐。 正文 由前文所得,…

老实说,LeetCode在我眼中的地位并不是很高,今天偶然刷了一下,没想到,写三个不会三个…… 是我变菜了,还是本来就不是那么简单,不过就结论来说,LeetCode对现在的我来说有刷一刷的价值。 这是三道成套的问题。提供题号 141,142,287。 如何判断一个链表中是否存在环。不允许修改链表,不允许申请O(N)及以上的空间。 在第一个问题的基础上,找到环的入口点。限制相同。 给 n+1…

之前的文章有提到,PC(一般为32位)的启动过程为 BIOS -> MBR -> loader -> kernel。 BIOS在休眠后的最后任务是从硬盘中的第0柱面第0磁头第1扇区中读取MBR,其实就是逻辑0扇区。因为扇区是从1开始计数的。 BIOS所做的内部原理对我来说是从来不去涉及的,所以也就不讨论这个。 从MBR开始才是我们程序猿所能任意写的内容,而MBR同BIOS一样,也需要对下一阶段loader进行过渡。 而一个特别麻烦的地方就是,没有任何库与函数供我们调用……因此我们只能在汇编层面从硬盘读取数据。…

以前嫌麻烦留着没看,今天补了一下,发现其实只是一些api的调用罢了,这里做个笔记。 对于我们用户来来说,获取物理内存的容量一般用内核调用即可,比如Linux 2.6中使用的detect_memory函数调用。其本质就是使用BIOS的中断0x15检测的。 这里稍微解释一下BIOS(可跳过),BIOS,基本输入输出系统,PC启动加载的第一个软件,介于操作系统与硬件的抽象层,可用于检测,加载引导程序或者操作系统。显然,PC的启动流程应该是 BIOS -> MBR…

或许是因为这种黑暗的剧情看的少了,在看完恶魔人之后,我基本是呆滞的,我不知道该说些什么,但是我在心里觉得我必须得写下点什么。 悲剧就是把美好的东西撕碎给人看 这句话在这部动漫中得到了很好的体现。 明的父母每年都会在国外给他寄来一双鞋子,明穿着最新的鞋子去见父母,等来的却是恶魔化的父亲,在明不得不杀死自己的父亲的时候,还给了一个鞋子的特写。 害怕的人们拿起武器杀人,不害怕的人手无寸铁,反遭其害。 在了爆出明是恶魔人的时候,他的朋友最后仍然接受了他,他的泪水与执着仍然感动了一部分人。但那有怎么样,然而这些所有象征着善良的人物,在第9集全部死光了。被肢解的尸体被人们高举着,在美树家燃烧的火焰中欢舞。 整部动漫给我印象最深刻的地方,无异于爱与希望的传递。…