给定链表的头节点,旋转链表,将链表每个节点往右移动 k 个位置,原链表后 k 个位置的节点则依次移动到链表头。
即,例如链表 : 1->2->3->4->5 k=2 则返回链表 4->5->1->2->3
数据范围:链表中节点数满足 ,
package main import _"fmt" import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ func rotateLinkedList( head *ListNode , k int ) *ListNode { if head==nil{ return nil } arr:=[]*ListNode{} for p:=head;p!=nil;p=p.Next{ arr=append(arr,p) } n:=len(arr) k%=n arr=append(arr[n-k:],arr[:n-k]...) for i,p:=range arr{ if i+1<n{ p.Next=arr[i+1] }else{ p.Next=nil } } return arr[0] }