链表
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 · 45 阅读 · 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 · 41 阅读 · 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 · 42 阅读 · 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 · 33 阅读 · 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 · 68 阅读 · 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 · 34 阅读 · 0 评论