Given a list, rotate the list to the right by k places, where k is non-negative.
Example:
Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL.先把链表连成环,再在特定的位置断开。注意k可能大于链表的长度。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def rotateRight(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""
if head == None or k == 0:
return head
length = 1
node = head
while node.next != None:
length += 1
node = node.next
m = k % length
node.next = head
for i in range(length - m):
node = node.next
head = node.next
node.next = None
return head