首页 > 试题广场 >

旋转链表

[编程题]旋转链表
  • 热度指数:4064 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定链表的头节点,旋转链表,将链表每个节点往右移动 k 个位置,原链表后 k 个位置的节点则依次移动到链表头。

即,例如链表 : 1->2->3->4->5 k=2 则返回链表 4->5->1->2->3

数据范围:链表中节点数满足
示例1

输入

{1,2,3,4,5},2

输出

{4,5,1,2,3}
示例2

输入

{1,2,3},3

输出

{1,2,3}

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
头像 太阳hxy
发表于 2023-07-15 17:00:05
旋转链表 思路: 1.先用一个hashmap将对应的下标和节点的值存起来 2.再遍历一遍链表,对原链表中的节点的值进行修改,根据下标查找对应的节点,将后面的k个节点进行平移到前面, 将前面的平移到后面(实际上是进行了修改) 3.注意取余操作 代码: import java.util.*; 展开全文
头像 不会做题的小菜鸡
发表于 2022-03-08 10:45:48
题目分析 题目给出了我们一条链表得头结点指针,和一个整数值k 题目要求我们根据给出得整数值k,开始将链表最后一个节点添加到头节点之前,重复此过程k次,返回当前的链表头节点 方法一:快慢指针 实现思路 我们先用一个指针将链表长度计算出来 然后将给定的k对链表长度取余,减少时间代价 先让快指 展开全文
头像 River_68
发表于 2022-04-05 17:54:28
找倒数第K个节点的变形,需要注意的是k大于链表的长度,需要得到链表的长度L后:K=K%L; package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ 展开全文
头像 BLK!!!
发表于 2023-04-25 17:22:39
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /* 展开全文
头像 牛客677799935号
发表于 2022-05-18 16:19:19
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * 展开全文
头像 虚数五行区
发表于 2024-04-25 18:35:34
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /* 展开全文
头像 红烧吹风机
发表于 2022-08-11 14:14:00
struct ListNode* rotateLinkedList(struct ListNode* head, int k )  {     if ( hea 展开全文
头像 June_sixth
发表于 2022-06-21 23:26:05
struct ListNode* rotateLinkedList(struct ListNode* head, int k ) { // write code here int count=0; struct ListNode*c=head; while(c) 展开全文
头像 AimerAimer
发表于 2022-03-07 14:48:22
题意:         给定链表的头节点,旋转链表,将链表每个节点往右移动 k 个位置,原链表后 k 个位置的节点则依次移动到链表头。       展开全文
头像 胖坨
发表于 2024-04-26 13:17:14
计算链表长度n。将链表形成循环链表,同时记录尾节点。计算实际需要旋转的位置,即k对n取模。找到新的头节点和尾节点,分别为原尾节点的下一个节点和第(n-k-1)个节点。断开循环链表,并返回新的头节点。 import java.util.*; /* * public class ListNode { 展开全文