原题网址:https://leetcode.cn/problems/rotate-list/
给一个链表头节点,给一个值k,让链表顺时针的转k次;
1-2-3-4;k=2
3-4-1-2;
其实就是找最后个一点点。俩表长度-k%链表长度
public ListNode rotateRight(ListNode head, int k) {
if(head == null) {
return head;
}
int size = 0;
ListNode node = head;
ListNode tail = null;
// 找尾结点和长度
while(node != null) {
size++;
if(node.next == null) {
tail = node;
}
node = node.next;
}
tail.next = head;
k = k%size;
node = head;
// 要转k次。从前找就是size-k-1的节点。
int tmp = size-k-1;
while(tmp>0) {
node = node.next;
tmp--;
}
ListNode next = node.next;
node.next = null;
return next;
}