给你一个链表的头节点 head
,旋转链表,将链表每个节点向右移动 k
个位置。
1.获取数组长度
2.连接成环
3.适当位置切断
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(k==0||head==null||head.next==null){
return head;
}
ListNode pre=new ListNode();
pre.next=head;
ListNode temp=head;
int n=1;//链表长度
while(temp.next!=null){
temp=temp.next;
n++;
}
if(k%n==0)return head;
//连接成环
temp.next=head;
int c=n-k%n-1;
ListNode temp1=head;
while(c-->0){
temp1=temp1.next;
}
//切断
head=temp1.next;
temp1.next=null;
return head;
}
}