跳表对数据结构中的数据常见的操作有:查找、插入、删除。有序数组的二分查找操作速度很快,但是插入、删除操作很耗时,并且对内存要求很苛刻。那么有什么数据结构能够做到查找、插入、删除操作速度都很快而且对内存要求不高呢?——答案是:跳表。 跳表是什么?即:把有序链表改造位支持“二分查找”算法,这种链表叫做跳 ...
分类:
其他好文 时间:
2019-10-09 19:01:48
阅读次数:
150
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路 链表基础操作考察,难点在于对于输入数据的把握,一定要考虑输入数据的全面性 1.出现单链表为NULL; 2.两个链表都为NULL; 3.一个链表遍历完成,另一链表还有剩余的节点 4.两个链 ...
分类:
其他好文 时间:
2019-10-01 22:19:56
阅读次数:
94
好久没写链表了,写这个基础操作还是出现了一些bug,建议以后做题先写 伪代码,可以有逻辑性 递归的解法,还行,感觉自己一直无法熟练运用递归,虽然递归空间和速度都不如迭代 ...
分类:
其他好文 时间:
2019-09-14 13:17:50
阅读次数:
82
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 例如A链表为1-3-5-7,B链表为2-4-6-8。所以合并后的新链表C为1-2-3-4-5-6-7-8 节点定义如下: 思路:利用递归 ...
分类:
其他好文 时间:
2019-09-04 13:42:20
阅读次数:
61
跳表的原理 跳表也叫跳跃表,是一种动态的数据结构。如果我们需要在有序链表中进行查找某个值,需要遍历整个链表,二分查找对链表不支持,二分查找的底层要求为数组,遍历整个链表的时间复杂度为O(n)。我们可以把链表改造成B树、红黑树、AVL树等数据结构来提升查询效率,但是B树、红黑树、AVL树这些数据结构实 ...
分类:
其他好文 时间:
2019-08-22 23:40:47
阅读次数:
117
题目描述: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 注意: 1)空指针NULL,null是错误的; 2)空间复杂度是O(m+n),因为一共进行 m+n 次递归调用,产生了 m+n 个栈帧。 ...
分类:
其他好文 时间:
2019-08-15 12:41:56
阅读次数:
95
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 首先我想到的是两两合并,分析时间大概是接近O(n^2)了。leecode显示需要200ms. 后来借鉴了快速排序的思想。优化了一点时间,能够达到48ms。感觉还不是很满意。 ...
分类:
其他好文 时间:
2019-08-03 00:14:18
阅读次数:
111
题目: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 考了关于链表的使用, 另外用New开辟的内存如果不释放容易造成内存泄漏。 ...
分类:
其他好文 时间:
2019-07-31 18:18:27
阅读次数:
89