链表
free1993
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 06. 从尾到头打印链表
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例一 输入:head = [1,3,2] 输出:[2,3,1] 思路 按照反转链表的方法,重新翻转一次,然后在遍历一次。O(n) 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}原创 2021-03-28 10:07:13 · 72 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x原创 2021-03-22 12:57:53 · 60 阅读 · 0 评论 -
剑指 Offer 25. 合并两个排序的链表
题目 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例一 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(N原创 2021-03-22 12:19:17 · 61 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点
题目 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,原创 2021-03-22 11:01:25 · 57 阅读 · 0 评论 -
删除链表的节点
题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* del原创 2021-03-17 10:33:49 · 91 阅读 · 0 评论 -
链表中倒数第k个节点
题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 思路 设两个指针,当后面的那个指针到了尾节点的时候,前面那个指针就是结果 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * L原创 2021-03-16 12:36:40 · 58 阅读 · 0 评论