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个开始后面的全部交换到链表的左侧。例如对于1,2,3,4,5,6 和 k = 2,就有交换之后的节点就是5,6,1,2,3,4。注意这里的k可能会超过链表的长度大小。

做法是首先可以计算链表的长度len,再将链表连成一个环状。接着从链表起始数len - k将链表断开,那么就完成了旋转,代码如下:

 /**
* 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) return NULL;
ListNode * p1 = head;
int count = ;
while(p1->next){
count++;
p1 = p1->next;
}
count++;
int len = count - k%count;//注意给出的k可能会超过链表的总长度
if(len == )
return head;
p1->next = head;
p1 = head;
for(int i = ; i < len; ++i){
p1 = p1->next;
}
ListNode * ret = p1->next;
p1->next = NULL;
return ret;
}
};

LeetCode OJ:Rotate List(旋转链表)的更多相关文章

  1. [LeetCode] 61. Rotate List 旋转链表

    Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: I ...

  2. [leetcode]61. Rotate List旋转链表

    Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: I ...

  3. leetCode 61.Rotate List (旋转链表) 解题思路和方法

    Rotate List  Given a list, rotate the list to the right by k places, where k is non-negative. For ex ...

  4. 【python】Leetcode每日一题-旋转链表

    [python]Leetcode每日一题-旋转链表 [题目描述] 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置. 示例1: 输入:head = [1,2,3,4,5] ...

  5. [LeetCode] Rotate List 旋转链表

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

  6. 【LeetCode题解】61_旋转链表(Rotate-List)

    目录 描述 解法:双指针 思路 Java 实现 Python 实现 复杂度分析 描述 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1-> ...

  7. Leetcode61. Rotate List旋转链表

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

  8. leetcode刷题-61旋转链表

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

  9. 【LeetCode每天一题】Rotate List(旋转链表)

    Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: I ...

  10. [LeetCode] 189. Rotate Array 旋转数组

    Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: ...

随机推荐

  1. Linux查看端口占用情况,并强制释放占用的端口

    1.查找被占用的端口 netstat -tln netstat -tln | grep 8080 netstat -tln 查看端口使用情况,而netstat -tln | grep 8080则是只查 ...

  2. asp.net发送短信

    public class SmsServiceManager { public static string Send(string PhoneNumber, out string sendNo) { ...

  3. PHP 利用文件锁处理高并发

    利用flock()函数对文件进行加锁(排它锁),实现并发按序进行. flock(file,lock,block)有三个参数. file:已经打开的文件 lock:锁的类型 LOCK_SH:共享锁(读锁 ...

  4. C++ 程序崩溃时生成Dump文件

    #include <DbgHelp.h> //生产DUMP文件 int GenerateMiniDump(HANDLE hFile, PEXCEPTION_POINTERS pExcept ...

  5. 什么时候使用namespace

    #include<iostream.h> 不用using namespace std; #include<iostream>要用using namespace std;

  6. 再也不学AJAX了!(一)AJAX概述

    "再也不学AJAX了"是一个与AJAX主题相关的文章系列,包含以下三个部分的内容: AJAX概述:主要回答"AJAX是什么"这个问题: 使用AJAX:介绍如何通 ...

  7. matlab练习程序(求灰度图像最大灰度,最小灰度,平均灰度)

    转自 http://www.cnblogs.com/tiandsp/archive/2012/01/07/2316006.html  感谢Dsp tian clearclc;img = imread( ...

  8. Metasploit安装——centos6.5

    1:安装ruby yum -y install ruby 2:根据官方文档执行,安装支持包  yum install xorg-x11-server-Xvfb -y 3:官网下载最新版的Metaspl ...

  9. web服务器安全笔记

    一.设置项目目录权限(centos ,apache为例) 1.chown -R root /var/www/html/project   (设置项目所属的用户) 2.chgrp  -R root /v ...

  10. ScrambleString, 爬行字符串,动态规划

    问题描述: Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty su ...