链表
Colin_Code
这个作者很懒,什么都没留下…
展开
-
[LeetCode 328]奇偶链表
[LeetCode 328]C++奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->原创 2020-11-11 15:08:21 · 62 阅读 · 0 评论 -
[LeetCode 725]分割链表
[LeetCode 725]C++分割链表给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例 1:原创 2020-11-11 14:23:15 · 64 阅读 · 0 评论 -
[LeetCode 234]回文链表
[LeetCode 234]C++实现回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: truehttps://leetcode-cn.com/problems/palindrome-linked-list/ (LeetCode 234)方法1、快慢指针翻转比对class Solution {public: bool isPalindrome(ListNode* head) {原创 2020-11-10 22:50:21 · 149 阅读 · 0 评论 -
[LeetCode 445]两数相加II
[LeetCode 445]C++实现两数相加II给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 7来源:力扣(Le原创 2020-11-10 21:38:57 · 55 阅读 · 0 评论 -
[LeetCode 24]两两交换链表中的节点
[LeetCode 24]C++实现两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs方法1、迭代h原创 2020-11-10 18:19:27 · 67 阅读 · 0 评论 -
[LeetCode 19]删除链表的倒数第N个节点
[LeetCode 19]C++实现删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list方原创 2020-11-10 14:55:55 · 60 阅读 · 0 评论 -
[LeetCode 83]删除排序链表中的重复元素
[LeetCode 83]C++实现删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-listclass Solution {原创 2020-11-10 10:58:22 · 52 阅读 · 0 评论 -
[LeetCode 160]相交链表
[LeetCode 160]C++实现相交链表示例:输入: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,1,8,4,5]。在 A 中,相交节点前有 2 个原创 2020-11-06 17:37:40 · 64 阅读 · 0 评论 -
[LeetCode 92]链表逆序
[LeetCode 92]C++实现链表逆序反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode 92)链接:https://leetcode-cn.com/problems/reverse-linked-list-ii//方法1、迭代原创 2020-11-06 17:31:54 · 186 阅读 · 0 评论 -
[LeetCode 23]合并K个升序链表
[LeetCode 23]C++实现合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6来源原创 2020-11-06 15:53:15 · 92 阅读 · 0 评论 -
[LeetCode 141,LeetCode 142]链表是否有环
[LeetCode 141,LeetCode 142]C++实现判断链表是否有环,及环的入口位置1-a: 判断是否有环https://leetcode-cn.com/problems/linked-list-cycle/(LeetCode 141)//方法1、利用STL中setclass Solution {public: bool hasCycle(ListNode *head) { set<ListNode*>s; while(head){原创 2020-11-05 22:20:30 · 60 阅读 · 0 评论 -
[LeetCode 86]分隔链表
[LeetCode 86]C++实现分隔链表要求:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。链接:https://leetcode-cn.com/problems/partition-list/ (LeetCode 86)//方法: 利用建立两个头指针class Solution {public: ListNode* partition(ListNode* head, int x)原创 2020-11-05 22:15:15 · 50 阅读 · 0 评论 -
[LeeCode 138]复制带随机指针的链表
复制带随机指针的链表给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:-----val:一个表示 Node.val 的整数。-----random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。来源:力扣(LeetCode 138)链接:https:原创 2020-11-05 22:00:44 · 155 阅读 · 0 评论