链表
Rutifrl
这个作者很懒,什么都没留下…
展开
-
23. 合并K个升序链表(hard)
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 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方法一:用容量为K的最小堆...原创 2020-10-25 12:48:13 · 408 阅读 · 0 评论 -
25. K 个一组翻转链表(hard)
给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5每k个节点一组进行翻转,先计算总长度L,把链表分为L/k...原创 2020-10-25 12:48:07 · 96 阅读 · 0 评论 -
92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL定位到left的pre,遍历left-right过程中,每个当前节点cur的next插到pre的后面class Solution {public: ListNode* revers...原创 2020-10-24 00:31:08 · 73 阅读 · 0 评论 -
148. 排序链表
在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4链表归并排序-1->5->3->4->0(cut)->9(slow)->10(fast)->12(fast->next)(-1->5)(3->4)(0->9)(10->12)(-1->3->4->5)(0)...原创 2020-10-24 00:30:11 · 80 阅读 · 0 评论 -
143. 重排链表
给定一个单链表L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.暴力,使用stack逆序保存后面要插入的数字(因为和遍历的顺序相反所以用stack保存)class Solution {public: void reorderList(List...原创 2020-10-23 01:15:50 · 94 阅读 · 0 评论