61. 旋转链表
解题思路
- 首先计算出链表长度
- 将链表长度进行取余
- 遍历链表 对链表进行分割 得到两个子链表
- 重新连接两个链表
- 比如1 2 3 4 5 k= 2 进行分割得到 1 2 3 和 4 5两个子链表
class Solution {public ListNode rotateRight(ListNode head, int k) {if(head == null){return null;}ListNode dummyNode = new ListNode(0);dummyNode.next = head;ListNode p = head;int count = 0;while(p != null){p = p.next;count++;}int x = k % count;int y = count - x;p = dummyNode;for(int i = 0; i < y; i++){p = p.next;}ListNode q = p.next;if(q == null){return dummyNode.next;}p.next = null;dummyNode.next = q;while(q.next != null){q = q.next;}q.next = head;return dummyNode.next;}
}