随笔分类 - 算法
摘要:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/submissions/ 关于二叉树的层序遍历,其节点读取顺序为 按层遍历从左到右的顺序进行读取; 但根据二叉树的特征可以了解到对于节点之间只有具体父子关系,并没有层
阅读全文
摘要:https://leetcode-cn.com/problems/reverse-linked-list-ii/submissions/ 对于指定区间的链表反转和完全的链表反转,其区别点在于 首先定位到反转区间,只针对反转区间进行反转操作 将原始链表中不需要反转的区间和最终反转成功的反转链表进行连接
阅读全文
摘要:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/ 对于链表反转其核心是通过将单链表原有的指针方向进行反转; 可以通过双指针,也可以通过递归两种方式实现反转 双指针 因此可以通过双指针迭代来实现,通过双指针每递进一次则执行一次反转操作
阅读全文
摘要:对于快慢指针 可以用来检测链表是否存在环的情况; https://leetcode-cn.com/problems/linked-list-cycle/ 其核心点在于 通过 慢指针是否能等于快指针 的判断 来检测 当前链表是否存在环; /** * Definition for singly-link
阅读全文
摘要:关于跳表 https://time.geekbang.org/column/article/42896 跳表作为一种特殊的有序单链表结构,由于链表本身并不支持二分查找,而在跳表结构中其通过维护多级索引的方式来实现快速查找(类似于二分查找); 对于其索引的结构为存在两个指针,分别是next指针指向同一
阅读全文
摘要:https://time.geekbang.org/column/article/76827 极客时间学习 布隆过滤器实际是基于位图来实现的一种数据存储结构; 关于位图 https://en.wikipedia.org/wiki/Bit_array 对于位图的底层存储结构实际为数组结构,目的是为了存
阅读全文
摘要:https://en.wikipedia.org/wiki/Merge_sort 合并排序 原理:利用于分治和递归的思想,首先将数据拆分为最小单位,然后从最小单位开始合并排序操作,将小分区逐步合并为最大的分区; 对于合并排序由于在合并操作过程中需要额外的内存空间,因此不属于原地排序算法 稳定性:在合
阅读全文
摘要:https://en.wikipedia.org/wiki/Quicksort 快速排序 原理:通过中位值(pivot)进行比较来进行不断分区,直到所有的区间达到最小(容量为1)时,此时结果就是有序的; 在执行对比操作时是从低位到高位的对比操作,通过不断摘除中间值的方式来实现排序 快速排序所有的移动
阅读全文
摘要:https://en.wikipedia.org/wiki/Insertion_sort 对于插入排序 原理:从低位到高位执行遍历操作,遍历到的元素作为对比元素存在;对于对比操作,实际是通过高位到低位,将比较元素和[0,比较元素所在索引-1]区间的数据进行对比操作以及交换(移动)操作; 对于移动操作
阅读全文
摘要:https://en.wikipedia.org/wiki/Bubble_sort 原理:从低位到高位的对比排序;通过compare和 swap达到排序的目的 对于冒泡排序由于其并不需要额外的内存空间,只需要原数组就可以达到排序的目的,不需要额外的内存空间,因此属于原地排序 稳定性分析 从低位到高位
阅读全文