/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(head == null)
return null;
ListNode flag = head;
ListNode ls1 = head;
ListNode ls2 = head;
int len = 0;
while(flag != null) {
len++;
flag = flag.next;
}
k = k % len ;
for(int i = 0 ; i < k ; i++) {
ls1 = ls1.next;
}
while(ls1.next!=null) {
ls1 = ls1.next;
ls2 = ls2.next;
}
ls1.next = head;
ListNode ls3 = ls2.next;
ls2.next = null;
return ls3;
}
}
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if (head == null) return null;
ListNode work = head;
int count = 0;
while (work != null) {
count++;
work = work.next;
}
k = k % count;
if (k == 0) {
return head;
}
work = head;
ListNode pre = head;
for (int i = 0; i < count - k; i++) {
pre = work;
work = work.next;
}
pre.next = null;
pre = head;
head = work;
while (work.next != null) {
work = work.next;
}
work.next = pre;
return head;
}
}