首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
旋转链表
[编程题]旋转链表
热度指数: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,
点此查看相关信息
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(0)
邀请回答
收藏(28)
分享
纠错
提交结果有问题?
21个回答
21篇题解
开通博客
太阳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 {
展开全文
问题信息
链表
双指针
难度:
21条回答
28收藏
1675浏览
热门推荐
通过挑战的用户
查看代码
牛客43415...
2022-09-25 10:33:22
牛客11456...
2022-09-20 14:24:38
弦翊
2022-09-15 00:06:52
Asphyxiay
2022-09-14 02:09:29
牛客52071...
2022-09-13 23:13:02
相关试题
最小面积子矩阵
动态规划
双指针
前缀和
评论
(44)
和为S的两个数字
数组
数学
双指针
评论
(1508)
来自
“一战通offer”互联...
神奇的数字
排序
双指针
评论
(46)
1.该校教师最多的是哪一年?( ...
资料分析
言语理解与表达
资料分析
评论
(1)
怎么做一个需求
需求分析
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ public ListNode rotateLinkedList (ListNode head, int k) { // write code here } }
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ ListNode* rotateLinkedList(ListNode* head, int k) { // write code here } };
#coding:utf-8 # class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @param k int整型 # @return ListNode类 # class Solution: def rotateLinkedList(self , head , k ): # write code here
using System; using System.Collections.Generic; /* public class ListNode { public int val; public ListNode next; public ListNode (int x) { val = x; } } */ class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ public ListNode rotateLinkedList (ListNode head, int k) { // write code here } }
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ function rotateLinkedList( head , k ) { // write code here } module.exports = { rotateLinkedList : rotateLinkedList };
val = $x; } }*/ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ function rotateLinkedList( $head , $k ) { // write code here }
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @param k int整型 # @return ListNode类 # class Solution: def rotateLinkedList(self , head: ListNode, k: int) -> ListNode: # write code here
package main import "fmt" import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ func rotateLinkedList( head *ListNode , k int ) *ListNode { // write code here }
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ struct ListNode* rotateLinkedList(struct ListNode* head, int k ) { // write code here }
# class ListNode # attr_accessor :val, :next # # def initialize(val = 0, _next = nil) # @val, @next = val, _next # end # end # # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @param k int整型 # @return ListNode类 # class Solution def rotateLinkedList(head, k) # write code here end end
/** * class ListNode(var val: Int) { * var next: ListNode = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ def rotateLinkedList(head: ListNode,k: Int): ListNode = { // write code here } }
/** * class ListNode(var `val`: Int) { * var next: ListNode? = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ fun rotateLinkedList(head: ListNode?,k: Int): ListNode? { // write code here } }
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ public ListNode rotateLinkedList (ListNode head, int k) { // write code here } }
/*class ListNode { * val: number * next: ListNode | null * constructor(val?: number, next?: ListNode | null) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ export function rotateLinkedList(head: ListNode, k: number): ListNode { // write code here }
/** * public class ListNode { * public var val: Int * public var next: ListNode? * public init(_ val: Int = 0, _ next: ListNode? = nil) { * self.val = val * self.next = next * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ func rotateLinkedList ( _ head: ListNode?, _ k: Int) -> ListNode? { // write code here } }
/** * #[derive(PartialEq, Eq, Debug, Clone)] * pub struct ListNode { * pub val: i32, * pub next: Option
> * } * * impl ListNode { * #[inline] * fn new(val: i32) -> Self { * ListNode { * val: val, * next: None, * } * } * } */ struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ pub fn rotateLinkedList(&self, head: Option
>, k: i32) -> Option
> { // write code here } }
{1,2,3,4,5},2
{4,5,1,2,3}
{1,2,3},3
{1,2,3}