LeetCode 61. Rotate List
题目:
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相关推荐
- 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 ...
- leetcode 61. Rotate List
Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL. 定义两个指 ...
- 【Leetcode -61.旋转链表 -82.删除排序链表中的重复元素Ⅱ】
Leetcode Leetcode -61.旋转链表 Leetcode -82.删除排序链表中的重复元素Ⅱ Leetcode -61.旋转链表 题目:给你一个链表的头节点 head ,旋转链表,将链表 ...
- [勇者闯LeetCode] 189. Rotate Array
[勇者闯LeetCode] 189. Rotate Array Description Rotate an array of n elements to the right by k steps. F ...
- Leetcode Golang 61. Rotate List.go
思路 先把list变成一个环,然后转到指定位置 注意有个取模的处理 code func rotateRight(head *ListNode, k int) *ListNode {if head == ...
- 61. Rotate List
题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example: Gi ...
- LeetCode 61~65
前言 本文隶属于专栏<LeetCode 刷题汇总>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕 ...
- [LeetCode 题解]: Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given ...
- LeetCode 61. 旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4-& ...
最新文章
- linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效
- DOS文件转换成UNIX文件格式详解
- 结队-五子棋游戏-项目进度
- Ruby离线安装gem依赖
- 用扫地机器人楼下吵吗_扫地机器人到底好不好用?说说我两年的使用体验!
- python的隐藏功能分享_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...
- idea js检查太卡_IntelliJ IDEA抑制、禁用与启用检查
- poj 1651区间dp
- 销售转向java编程的开始之路
- postman 传 map数据怎么传
- c语言函数定义四要素,C语言函数
- 解决element 表单验证不通过的俩大坑
- Unity Camera设置-Culling Mask
- 计算机机房管理具体工作和职责,机房职责_机房岗位职责_机房工作职责
- java开发平时看什么东西
- BERT破的11项纪录具体都是什么?
- Android变录音边转换为mp3格式的声音---libmp3lame库的使用
- 2022年中式烹调师(高级)操作证考试题库及模拟考试
- k8s - containerd 磁盘清理
- C语言 实现 最长名字输出
热门文章
- 文件md5码怎么生成_Linux 系统文件校验方法--MD5,SHA1,PGP,SHA256,SHA512
- 学习OpenVINO笔记之Inference Engine Device Query API
- java输入一行_用java编写从标准输入读入一行字符串,打印出其中所有的数字
- 解决ubuntu18.04中python兼容以及pip兼容问题
- HTML绿色风格农业科技公司网站源码
- CSS3移动应用程序企业网站模板
- 梦聆轻量化音乐播放器源码
- php word com,php 展示word
- c语言做一个小程序报告,《C语言程序设计实践》课程报告30个小程序组合成一个大程序.doc...
- oracle jinitiator版本太旧,Oracle Jinitiator 版本太旧或过低怎么办