链表
单链表、双向链表、循环链表、双向循环链表、静态链表
qxlxi
21届本,后端工程师 (专注于Java、Go、数据库、缓存、消息队列、网络、OS、算法、软件设计、DevOps、云原生、大数据、分布式系统架构设计等)
展开
-
【程序员面试金典】02.07. 链表相交
链表相交原创 2023-07-29 11:07:54 · 194 阅读 · 0 评论 -
【每日一题-leetcode】237. 删除链表中的节点
237. 删除链表中的节点删除链表中的节点难度简单720请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.//通常我们删除节点都是通过将要删除节点的前一个指针和呆删除原创 2020-07-23 16:53:39 · 269 阅读 · 0 评论 -
【每日一题-leetcode】142. 环形链表 II
142. 环形链表 II环形链表 II难度中等533给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。原创 2020-07-13 08:31:32 · 332 阅读 · 0 评论 -
【每日一题-leetcode】19. 删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点删除链表的倒数第N个节点难度中等885给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.//快慢指针,这块删除不难,主要是要处理好 1->2 删除1这样的问题。//所以需要设定一个前置指针,至于为什么fast 和 slow要指向pre//1>2>3原创 2020-07-12 10:52:38 · 307 阅读 · 0 评论 -
【每日一题-leetcode】2.两数相加
2.两数相加两数相加难度中等4562给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807时间复杂度为O(M原创 2020-07-10 09:24:14 · 302 阅读 · 0 评论 -
【左神算法】回文链表
题目判断一个链表是否为回文结构 【题目】 给定一个链表的头节点head,请判断该链表是否为回文结构。 例如: 1->2->1,返回true。1->2->2->1,返回true。 15->6->15,返回true。 1->2->3,返回false。进阶: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。1.借助栈实现1.1 思路栈是一个先进后出的结果,如果一个链表是回文的话 那么势必 出栈的val 等于 正序的v原创 2020-05-14 19:05:57 · 486 阅读 · 0 评论 -
【剑指offer】52.两个链表的第一个公共节点
52.两个链表的第一个公共节点面试题52. 两个链表的第一个公共节点难度简单37输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the ...原创 2020-04-30 15:33:20 · 299 阅读 · 0 评论 -
【剑指offer】35.复杂链表的复制
35.复杂链表的复制面试题35. 复杂链表的复制难度中等33请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13...原创 2020-04-23 18:03:30 · 348 阅读 · 0 评论 -
【剑指offer】25.合并两个排序的链表
25.合并两个排序的链表面试题25. 合并两个排序的链表难度简单17输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->41.迭代时间复杂度:O(m+n)空间复杂度:O(1) public ListNode mer...原创 2020-04-06 18:27:09 · 297 阅读 · 0 评论 -
【剑指offer】24.反转链表
24.反转链表面试题24. 反转链表难度简单28收藏分享切换为英文关注反馈定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:链表的反转,通常需要定义一个前置节点 遍历链表中所有结点。time:...原创 2020-04-05 11:00:02 · 323 阅读 · 0 评论 -
【剑指offer】18. 删除链表的节点
18. 删除链表的节点难度简单12收藏分享切换为英文关注反馈给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 ->...原创 2020-04-02 11:01:26 · 258 阅读 · 0 评论 -
【每日一题-leetcode】 21. 合并两个有序链表
21. 合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->41.迭代th:主要是通过定义一个head节点 遍历两个链表就可以,最后一定会有一个链表没有遍历完 使用三目运算符进行算需要注意的...原创 2020-03-29 16:29:57 · 399 阅读 · 0 评论 -
【剑指offer】6.从头到尾打印链表
6.从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]1.使用栈th:逆序打印 我们可以将链表loop一遍,push到栈中。然后pop出 因为栈是先进后出 所有最后顺序就是逆序的顺序。 这里建议push最好是val push node的话 占用的内存空间比较大。time: O(n)...原创 2020-03-28 11:40:08 · 290 阅读 · 0 评论 -
【每日一题-leetcode】25.reverse-nodes-in-k-group
25.K 个一组翻转链表难度困难416给你一个链表,每 *k *个节点一组进行翻转,请你返回翻转后的链表。*k *是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 *k *的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 *k *= 2 时,应当返回: 2->1->4->3->5...原创 2020-03-26 17:32:03 · 299 阅读 · 0 评论 -
【每日一题-leetcode】24.swap-nodes-in-pairs
24.两两交换链表中的节点//给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 //// 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 //// //// 示例: //// 给定 1->2->3->4, 你应该返回 2->1->4->3.// // Related Topics 链表1.递归thi...原创 2020-03-25 10:45:48 · 315 阅读 · 0 评论