题目:
Given a list, rotate the list to the right by k places, where k is non-negative.

For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL

思路:
将链表右移k次,要注意的就是k如果很大,只要先将k对链表长度len取余,减小时间复杂度。
如果head为NULL,直接返回NULL。记len初始为1,设置双指针pre、end,都初始化为head。借用end来计算len,如果end的next不为NULL ,len加1,end指向下一个。如果k比链表的长度大,则取余,end再赋值为head,使得pre和end包含k+1个节点。如果end的下一个如果不是NULL,pre和end都后移。最后将end的next接到原来的head,因为pre和end包含k+1个节点,新的head就为pre的下一个节点,pre的下一个此时就是链表尾部,为NULL。

代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* rotateRight(ListNode* head, int k) {if(head==NULL){//如果head为NULL,直接返回NULLreturn NULL;}int len=1;//记len为1ListNode *pre=head;//设置双指针ListNode *end=head;while(end->next){//借用end来计算len,如果end的next不为NULL ++len;//len加1end=end->next;//end指向下一个}k%=len;//如果k比链表的长度大,则取余end=head;//end再赋值为headwhile(k){//使得pre和end包含k+1个节点end=end->next;--k;}while(end->next!=NULL){//end的下一个如果不是NULLpre=pre->next;//pre和end都后移end=end->next;}end->next=head;//将end的next接到原来的headhead=pre->next;//因为pre和end包含k+1个节点,新的head就为pre的下一个节点pre->next=NULL;//pre的下一个此时就是链表尾部,为NULLreturn head;}
};

**输出结果:**12ms

LeetCode 61. Rotate List相关推荐

  1. leetcode 61 Rotate List ----- java

    Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given  ...

  2. leetcode 61. Rotate List

    Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL. 定义两个指 ...

  3. 【Leetcode -61.旋转链表 -82.删除排序链表中的重复元素Ⅱ】

    Leetcode Leetcode -61.旋转链表 Leetcode -82.删除排序链表中的重复元素Ⅱ Leetcode -61.旋转链表 题目:给你一个链表的头节点 head ,旋转链表,将链表 ...

  4. [勇者闯LeetCode] 189. Rotate Array

    [勇者闯LeetCode] 189. Rotate Array Description Rotate an array of n elements to the right by k steps. F ...

  5. Leetcode Golang 61. Rotate List.go

    思路 先把list变成一个环,然后转到指定位置 注意有个取模的处理 code func rotateRight(head *ListNode, k int) *ListNode {if head == ...

  6. 61. Rotate List

    题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example: Gi ...

  7. LeetCode 61~65

    前言 本文隶属于专栏<LeetCode 刷题汇总>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕 ...

  8. [LeetCode 题解]: Rotate List

    Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given  ...

  9. LeetCode 61. 旋转链表

    给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4-& ...

最新文章

  1. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效
  2. DOS文件转换成UNIX文件格式详解
  3. 结队-五子棋游戏-项目进度
  4. Ruby离线安装gem依赖
  5. 用扫地机器人楼下吵吗_扫地机器人到底好不好用?说说我两年的使用体验!
  6. python的隐藏功能分享_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...
  7. idea js检查太卡_IntelliJ IDEA抑制、禁用与启用检查
  8. poj 1651区间dp
  9. 销售转向java编程的开始之路
  10. postman 传 map数据怎么传
  11. c语言函数定义四要素,C语言函数
  12. 解决element 表单验证不通过的俩大坑
  13. Unity Camera设置-Culling Mask
  14. 计算机机房管理具体工作和职责,机房职责_机房岗位职责_机房工作职责
  15. java开发平时看什么东西
  16. BERT破的11项纪录具体都是什么?
  17. Android变录音边转换为mp3格式的声音---libmp3lame库的使用
  18. 2022年中式烹调师(高级)操作证考试题库及模拟考试
  19. k8s - containerd 磁盘清理
  20. C语言 实现 最长名字输出

热门文章

  1. 文件md5码怎么生成_Linux 系统文件校验方法--MD5,SHA1,PGP,SHA256,SHA512
  2. 学习OpenVINO笔记之Inference Engine Device Query API
  3. java输入一行_用java编写从标准输入读入一行字符串,打印出其中所有的数字
  4. 解决ubuntu18.04中python兼容以及pip兼容问题
  5. HTML绿色风格农业科技公司网站源码
  6. CSS3移动应用程序企业网站模板
  7. 梦聆轻量化音乐播放器源码
  8. php word com,php 展示word
  9. c语言做一个小程序报告,《C语言程序设计实践》课程报告30个小程序组合成一个大程序.doc...
  10. oracle jinitiator版本太旧,Oracle Jinitiator 版本太旧或过低怎么办