题目链接:https://leetcode.com/problems/rotate-list/
思路就是把该链表组成一个环,同时计算出链表的长度length。
然后用k=k%length,算出k到链表结尾都多长,然后从链表头
走(length-k)个节点的距离,最后断链,返回的就是要求的节点。
AC 6ms 100% Java:
/**
* 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||k==0)
return head;
ListNode p=head;
int length=0;
while(p.next!=null){
length++;
p=p.next;
}
length++;
p.next=head;
k=k%length;
int count=length-k-1;
p=head;
while(count!=0){
count--;
p=p.next;
}
ListNode temp=p;
p=p.next;
temp.next=null;
return p;
}
}