
leetcode之链表
刷leetcode的链表题目
ww_250
一直在超越,从未被模仿
展开
-
leetcode 21 合并两个有序链表 (简单)
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:0->2->3, 1->2->5输出:0->1->2->2->3->5解题思路:构造一个空节点,指向head。一个循环中 遍历链表A和B,逐个节点value比较大小,追加到空节点后。谁(链表)的节点被追加到空节点后,谁(链表)的head =head->next,另一个head不变。 复杂度O(n+n),即O(n)。只..原创 2020-05-13 13:02:21 · 181 阅读 · 0 评论 -
leetcode 138 复制带随机指针的链表(中等--困难)
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。我们用一个由n个节点组成的链表来表示输入/输出中的链表。每个节点用一个[val, random_index]表示:val:一个表示Node.val的整数。random_index:随机指针指向的节点索引(范围从0到n-1);如果不指向任何节点,则为null。输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]...原创 2020-05-12 23:48:52 · 210 阅读 · 0 评论 -
leetcode 86 分隔链表(中等)
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5解题思路:构建2个临时节点,临时节点less链接小于x的node,临时节点more链接大于等于x的node。最后less的尾部指向more->next,m.原创 2020-05-11 12:09:12 · 173 阅读 · 0 评论 -
leetcode142 环形链表(中等)
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。下图有环,返回节点2解题思路:...原创 2020-05-10 12:01:40 · 183 阅读 · 0 评论 -
leetcode 160 链表相交点(简单)
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:正在上传…重新上传取消在节点 c1 开始相交。输出节点C1解题思路:从等长位置,同时遍历,如果有交点,一定会有 pA==pB解法1:求出2个链表长度,长的链表 表头先向后偏移,确保和短的链表 表头处于一个位置。在一起遍历。代码如下:struct node { int value; node* next; };node* get_intersection_node(node* headA, nod原创 2020-05-09 14:21:32 · 242 阅读 · 0 评论 -
leetcode 92 指定范围反转链表(中等)
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL解题思路:1、构造一个dummy节点 指向头结点,为了可以在头节点指针发生变化的时候,直接用dummy->next定位到头节点,如下:dummy->1->2->3->...原创 2020-05-09 11:38:26 · 257 阅读 · 0 评论 -
leetcode 206 反转链表 (简单)
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解答原创 2020-05-08 16:05:21 · 188 阅读 · 0 评论