![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
链表题目
Orange&1024
头秃
展开
-
10.K 个一组翻转链表(LeetCode25)
问题描述 :给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的原创 2020-09-12 21:46:37 · 111 阅读 · 0 评论 -
9.从链表中删去总和值为零的连续节点(LeetCode1171)
问题描述 :给你一个链表的头节点 head,请你编写代码,反复删去链表中由总和值为 0 的连续节点组成的序列,直到不存在这样的序列为止。如果存在多个总和值为0的连续节点序列,优先删除位置靠前的序列。删除完毕后,请你返回最终结果链表的头节点。示例 1:输入:head = [1,2,-3,3,1]输出:[3,1]提示:答案 [1,2,1] 不正确。示例 2:输入:head = [1,2,3,-3,4]输出:[1,2,4]示例 3:输入:head = [1,2,3,-3,-2]输出:[1]原创 2020-09-12 21:33:12 · 145 阅读 · 0 评论 -
8.链表中的下一个更大节点(LeetCode1019)
问题描述 :给出一个单向链表。链表中的节点分别编号为:node_1, node_2, node_3, … 。每个节点都可能有下一个更大值(next larger value):对于 node_i,如果其 next_larger(node_i) 是 node_j.val,那么就有 j > i 且 node_j.val > node_i.val,而 j 是可能的选项中最小的那个。如果不存在这样的 j,那么下一个更大值为 0 。返回整数答案数组(代码中是vector) answer,其中 an原创 2020-09-12 21:22:28 · 229 阅读 · 0 评论 -
7.两两交换链表中的节点(LeetCode24)
问题描述 :给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。可使用以下代码,完成其中的swapPairs函数,其中形参head指向无头结点单链表,返回结果链表的头指针。#include<iostream>#include<vector>using namespace std;struct ListNode{ int val; ListNode *next; ListNod原创 2020-09-12 21:10:18 · 105 阅读 · 0 评论 -
6.奇偶链表(LeetCode328)
问题描述 :给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6-原创 2020-09-12 21:01:44 · 70 阅读 · 0 评论 -
5.分隔链表(LeetCode725)
问题描述 :给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例 1:输入:root = [1,原创 2020-09-12 20:52:32 · 194 阅读 · 0 评论 -
4.链表组件(LeetCode 817)
问题描述 :给定链表头结点 head,该链表上的每个结点都有一个唯一的整型值 。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数,这里对组件的定义为:链表中一段极长连续结点的值(该值必须在列表 G 中)构成的集合。极长的含义是:这段连续结点的前面或后面结点不属于G。示例 1:输入:head: 0->1->2->3G = [0, 1, 3]输出: 2解释:链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一原创 2020-07-05 17:48:37 · 297 阅读 · 0 评论 -
3.排序链表(LeetCode 148)
问题描述 :在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5可使用以下代码,完成其中的sortList函数,其中形参head指向无头结点单链表。#includeusing namespace std;struct ListNode原创 2020-07-05 17:36:42 · 131 阅读 · 0 评论 -
2.旋转链表(LeetCode 61)
问题描述 :给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入: 0->1->2原创 2020-07-05 17:13:13 · 92 阅读 · 0 评论 -
1.重排链表(LeetCode:143)
问题描述 :给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.可使用以下代码,完成其中的reorderList原创 2020-07-05 17:00:17 · 212 阅读 · 0 评论