首页 > 试题广场 >

每K个一组反转链表

[编程题]每K个一组反转链表
  • 热度指数:9026 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。

说明:
1. 你需要自行定义链表结构,将输入的数据保存到你的链表中;
2. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换;
3. 你的算法只能使用常数的额外空间。

输入描述:
第一行输入是链表的值
第二行输入是K的值,K是大于或等于1的整数

输入形式为:
1 2 3 4 5
2


输出描述:
当 k = 2 时,应当输出:
2 1 4 3 5

当 k = 3 时,应当输出:
3 2 1 4 5

当k=6时,应当输出:
1 2 3 4 5
示例1

输入

1 2 3 4 5
2

输出

2 1 4 3 5
头像 白色高跟鞋
发表于 2020-04-26 23:28:28
python20行,O(n)算法,无额外空间开销。需要两个辅助函数: reverse(h, k):给定一个头节点和k,反转至多k个节点,返回反转后的头节点、下一段的头节点和已反转数; reverse_k(head, k):按K个每组反转链表,返回反转后的头节点; reverse(h, k)就 展开全文
头像 那就来一个吧
发表于 2019-09-29 12:21:33
每K个一组反转链表 答案来自答主 输入描述: 第一行输入是链表的值第二行输入是K的值,K是大于或等于1的整数输入形式为:1 2 3 4 52输出描述: 当 k = 2 时,应当输出:2 1 4 3 5当 k = 3 时,应当输出:3 2 1 4 5当k=6时,应当输出:1 2 3 4 5输入 1 2 展开全文
头像 hitzyq1
发表于 2021-07-19 10:50:25
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); String[] strArr = 展开全文
头像 牛客676277161号
发表于 2023-02-23 21:55:54
#include <iostream> using namespace std; struct ListNode { int val; struct ListNode* next; ListNode(int x) : val(x), next(NU 展开全文
头像 牛客55646197号
发表于 2024-02-02 21:09:59
import java.util.Scanner; class MySeqList { class ListNode { public int val; public ListNode next; public ListNode(int va 展开全文
头像 BrianWu
发表于 2021-07-12 10:01:05
/*描述给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 说明: 你需要自行定义链表结构,将输入的数据保存到你的链表中; 你不能只是单纯的改变节点内部的值,而是需要实际的进行 展开全文
头像 Five鱼
发表于 2022-06-20 16:02:54
// JS 实现 function ListNode(x){     this.next = null;     this.val = x; } let list = new ListNode(); let head = list; let data 展开全文
头像 牛客965916937号
发表于 2022-06-04 16:24:51
#include <iostream> #include <stack> using namespace std; struct LinkNode {     int valu 展开全文