题目描述:力扣
题目要求输入一个链表的头节点head和一个整数k,输出将链表右移k个位置的链表。
题解:
基本思路:
1.确定输入链表的长度length。
2.将第length-k个节点的next节点设为空。
3.将第length-k+1个节点作为新的链表的头节点,将链表中最后一个节点的next设为原来的head节点。
需要注意的部分:
1.如果输入链表只有一个节点或者为空,无论k为多少直接返回head.
2.当k比链表长度length大时,旋转k位的结果和旋转k%length的结果相同。
3.如果k和链表长度相同,最终结果也和最初链表一致。
class Solution(object):
def rotateRight(self, head, k):
length = 0
fakenode = ListNode(next=head)
node = fakenode.next
while node!=None:
if node.next==None:
lastnode = node
length = length+1
node = node.next
if k==0 or length==0 or k==length or length==1:
return head
k = k%length
if k==0 or length==0 or k==length or length==1:
return head
now = 0
newnode = fakenode.next
while now



