package 链表操作.q61_旋转链表;
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
/**
* 先连接成环再找断点 o(n)
*/
public class Solution {
public ListNode rotateRight(ListNode head, int k) {
if (head == null) {
return null;
}
if (head.next == null) {
return head;
}
ListNode oldTail = head;
int n;
for (n = 1; oldTail.next != null; n++) {
oldTail = oldTail.next;
}
oldTail.next = head;
ListNode newTail = head;
for (int i = 0; i < n - k % n - 1; i++) {
newTail = newTail.next;
}
ListNode newHead = newTail.next;
newTail.next = null;
return newHead;
}
}