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 · 132 阅读 · 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 · 157 阅读 · 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 · 141 阅读 · 0 评论 -
leetcode142 环形链表(中等)
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。下图有环,返回节点2 解题思路: ...原创 2020-05-10 12:01:40 · 135 阅读 · 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 · 164 阅读 · 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 · 211 阅读 · 0 评论 -
leetcode 206 反转链表 (简单)
反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解答原创 2020-05-08 16:05:21 · 118 阅读 · 0 评论