![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
文章平均质量分 58
链表相关
会编程的林俊杰
这个作者很懒,什么都没留下…
展开
-
LC.234. 回文链表
根据回文链表的定义想到了要先反转链表并将其保存为新的链表,然后新旧链表从头节点的值比较至链表 1/2 处,期间若有不同则返回false,否则返回true。但是,我却hu'l原创 2021-06-14 14:09:31 · 115 阅读 · 0 评论 -
LC.19. 删除链表的倒数第 N 个结点
知识点:寻找链表倒数第n个节点 删除链表中值为目标值的节点 删除链表中某一节点的简化思原创 2021-06-14 13:47:01 · 91 阅读 · 0 评论 -
链表循环终止条件总结
循环遍历一个链表时,终止条件的正确性尤为重要,它可以有效的避免链表指针在移动时出现空指针错误,以及正确解题。而终止条件的确定依赖于问题的需求以及每次走的步数;其次,链表的节点个数也会影响终止条件,有时偶数个节点满足终止条件,而奇数个节点则不满足,因此我们可以根据这些去分析终止条件,一个正确的终止条件应该是满足普遍情况的。常见终止条件:...原创 2021-06-13 12:24:25 · 1868 阅读 · 0 评论 -
LC.24. 两两交换链表中的节点
解法一:双指针迭代----改变相邻两个节点的值如果 head == null || head.next == null ,无需交换,直接返回 head 即可;如果步骤1假设不成立,则设置两个指针slow、fast,初始化为 ListNode slow = head; ListNode fast = head.next;进入循环,交换两个指针所指向节点的值,交换成功后再将其进行后移;循环结束后返回head。public ListNode swapPairs(ListNode hea.原创 2021-04-07 23:21:08 · 106 阅读 · 0 评论 -
LC.206.反转链表
反转链表解法一:借助外部空间 先申请一个集合,比如ArrayList,通过对链表的遍历将其节点进行存储记录,之后再对集合进行倒序循环,同时指定其指针域为前一个节点,这样就相当于重构链表。当然,利用其他集合,比如栈也是可以的,只不过使用到的方法不同。public ListNode reverseList(ListNode head) { if(head == null) return null; List<ListNode> res = new Arra原创 2021-04-07 22:27:08 · 185 阅读 · 0 评论 -
链表环问题
前言 链表环问题是链表中一种常见的问题,其常规解法就是利用快慢指针技巧来解题。下面来介绍力扣中涉及到链表环的两个问题:LC.141 环形链表,LC.142 环形链表 II。LC.141. 环形链表 首先分析题干,其要求就是判断给定的链表是否有环,至于提到的 pos 变量是用于标识链表环起点的位置,它不会作参数进行传递,只是在测试用例时会涉及到,做题时可以忽略。 ...原创 2021-04-11 20:47:36 · 146 阅读 · 2 评论 -
关于链表中倒数第k个节点
前言 本文介绍关于链表中倒数第k个节点的相关问题,剑指 Offer 22. 链表中倒数第k个节点,LC.19 删除链表的倒数第 N 个结点 。剑指 Offer 22. 链表中倒数第k个节点 思路: 利用快慢指针技巧,先让快指针走 k 步,然后快慢指针开始同速前进,这样当快指针走到链表末尾 null 时,慢指针所在的位置就是倒数第 k 个链表节点。class Solution { public ListNode getKthFromEnd(ListNode head, int k) {原创 2021-04-11 21:28:16 · 80 阅读 · 0 评论 -
LC.21.合并两个有序链表
合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路:解法一(迭代): 借助两个指针,其分别指向l1的头节点、l2的头节点,每次比较两个链表中指针所指向的值,若l1.val >= l2.val,则选 l1 节点,并将其后移一位(l1 = l1.next);若l1.val < l2.val,则选 l2 节点,并将其后移一位(l2 = l2.next)。 那么现在,问题来了,选出的节点要存放到哪里呢? 关于链表的操作原创 2021-04-05 18:01:00 · 89 阅读 · 0 评论 -
面试题 02.03. 删除中间节点
思路: 对于单链表a->b->c->d,如果要求我们删除一个节点 b ,常用的做法就是从头遍历链表找到要被删除的节点 b ,期间记录该结点的上一个节点 a ,将 a 的指针指向 c 即可解决问题。 但是本题只能访问要被删除的节点,所以按照常规的思路无法解题。那么我们就要想通过这个要被删除的节点我们能知道什么?显然,我们只能访问它与它之后的节点,所以我们就要从这里入手。紧接着,既然我们无法得到它上一个节点,那么我们就不找了,让它成为它的下一个节点,并让它下一个节点消失不就好了嘛?.原创 2021-04-08 19:39:54 · 75 阅读 · 0 评论