首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
旋转链表
[编程题]旋转链表
热度指数:5170
时间限制: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)
邀请回答
收藏(43)
分享
提交结果有问题?
26个回答
25篇题解
开通博客
太阳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对链表长度取余,减少时间代价 先让快指
展开全文
红烧吹风机
发表于 2022-08-11 14:14:00
struct ListNode* rotateLinkedList(struct ListNode* head, int k ) { if ( hea
展开全文
布鲁克11
发表于 2023-04-25 17:22:39
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /*
展开全文
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 * } */
展开全文
牛客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: /*
展开全文
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 {
展开全文
问题信息
链表
双指针
难度:
26条回答
43收藏
3672浏览
热门推荐
通过挑战的用户
查看代码
牛客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
相关试题
神奇的数字
排序
双指针
评论
(46)
最小面积子矩阵
动态规划
双指针
前缀和
评论
(46)
和为S的两个数字
数组
数学
双指针
评论
(1512)
来自
“一战通offer”互联...
3.下列关于表中西部省市区2006...
资料分析
言语理解与表达
资料分析
评论
(1)
Mysql中表student_in...
数据库
SQL
评论
(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}