return 4->5->1->2->3->NULL.
思路:题目很清晰,思路是先得到链表长度,再从头开始直到特定点,开始变换连接即可。
代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(k == 0 || head == null)
return head;
int len = 0;
ListNode first = head;//头结点
ListNode last = null;//尾节点
while(head != null){
len++;//求长度
last = head;//最后一个节点
head = head.next;//循环条件
}
k = k%len;//如果k>len,取余数
int n = 0;
head = first;//标记到头结点
while(head!= null){
if(++n == (len - k))//判断是否到达位置
break;
head = head.next;
}
//以下为交换位置
last.next = first;
first = head.next;
head.next = null;
return first;
}
}/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(k == 0 || head == null)
return head;
int len = 0;
ListNode first = head;//头结点
ListNode last = null;//尾节点
while(head != null){
len++;//求长度
last = head;//最后一个节点
head = head.next;//循环条件
}
k = k%len;//如果k>len,取余数
int n = 0;
head = first;//标记到头结点
while(head!= null){
if(++n == (len - k))//判断是否到达位置
break;
head = head.next;
}
//以下为交换位置
last.next = first;
first = head.next;
head.next = null;
return first;
}
}版权声明:本文为博主原创文章,未经博主允许不得转载。
leetCode 61.Rotate List (旋转链表) 解题思路和方法
原文地址:http://blog.csdn.net/xygy8860/article/details/46892749