题目如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/50de77f854877e1e21dc938ea35bdd33.png)
这题目一看,如果不使用solution所提供的成环,或者快慢指针的办法,则可以直接使用遍历整个链表,将数字储存在一个list里面,然后对这个list进行处理成order和rotate linked list数字order一致的list,然后再将这个list储存进入新创建的linked list当中,这样就可以了,代码如下所示:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def rotateRight(self, head: ListNode, k: int) -> ListNode:
#这题简单!在断点切开分别进行操作就可以了
#method2: use all the travel is ok
cur=head
i=1
ls=[]
while head:
ls.append(head.val)
head=head.next
if head==None:
break
i+=1
new_node=ListNode(0)
new_node_ad=new_node
#这里需要注意,因为旋转的次数k,可能比整个链表的长度还长,因此需要做取余的处理
if k>i:
k=k%i
ls_after=ls[(len(ls)-k):]
ls_new=ls_after+ls[:len(ls)-k]
for i in ls_new:
new_node.next=ListNode(i)
new_node=new_node.next
return new_node_ad.next
得解!
速度如下:
![](https://i-blog.csdnimg.cn/blog_migrate/fbc7e3dd39aac2ad16bad365af6dfb2d.png)