链表
Owen_Q
这个作者很懒,什么都没留下…
展开
-
链表交点问题
链表交点问题也属公司青睐的专题之一,一般依靠双指针来解决,主要分为链表判环和链表相交两大专题。 142.Linked List Cycle II 题意: 判断链表是否有环,若有环,则返回环入口节点。 思路: 这题就是典型的快慢指针问题,代码很简单,但具体理论证明却十分值得研究。 首先先说解法, 分两部分,判环和寻找入口: 判环部分,设置两个指针(快指针fa一次走两个节点,慢指针sl一次走一个节点),若快指针走到了链表尾即空节点则说明链表无环,否则在环中快慢指针必能相遇。 寻找入口部分,慢指.原创 2020-10-09 12:34:50 · 466 阅读 · 0 评论 -
递归法求解面试三大经典链表问题
最近参加了一堆笔试面试模拟试,发现链表题是很多公司面试官所喜欢亲爱的一类题目,手撕链表的题目随处可见。毕竟,链表作为数据结构的基础,十分重要。而链表又恰恰是写代码中很容易出bug的一种数据结构,断链,空指针等各种问题经常让人猝不及防。 这里,我总结了常见的三种最常见的链表题:链表翻转,链表合并,以及基于二叉链表的二叉树翻转。偶然间发现,递归法简直是处理这类问题的一大利器。利用递归法,可以完美避开链表的各大坑点,那么就让我们来试试吧。 二叉树翻转 题意: 轴对称翻转一个二叉树 思路: 这道题简直就原创 2020-08-19 02:36:35 · 780 阅读 · 0 评论 -
LeetCode-143-Reorder List
题目链接 题意: 重构一个单链表,O(1)空间复杂度条件下将链表L1~L2~L3~……~Ln-1~Ln重构为L1~Ln~L2~Ln-1~L3…… 思路: 看似是一个双指针的题,一头一尾两个指针向中间合并。然而题目中的单链表这一数据结构使得尾指针无法向前移动,题目难度瞬间增大。 于是,只能利用链表操作来完成。思路也比较清晰,关键就是链表操作细节点很多。化整为零,可以通过三个小操作来实现这个任务: 1.将单链表一分为二 2.将后半部分链表翻转 3.再将两段链表合并 下面详细来说明这三部分 1原创 2020-08-09 07:56:41 · 210 阅读 · 0 评论 -
剑指 Offer(力扣版)-59-II-队列的最大值
题目链接 题意:定义一个新队列数据结构,可以快速O(1)查找队中最大值 思路:在队列中添加一个链表,用于维护当前队列最大值,该链表指向该最大值出队后剩余列表的最大值 对于该新队列的三个基本操作: 入队: ...原创 2020-08-09 07:56:36 · 270 阅读 · 0 评论