LeetCode刷题_61. Rotate List

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pku_langzi/article/details/85080325

原题链接:https://leetcode.com/problems/rotate-list/description/
Given a linked list, rotate the list to the right by k places, where k is non-negative.

Example 1:

Input: 1->2->3->4->5->NULL, k = 2
Output: 4->5->1->2->3->NULL
Explanation:
rotate 1 steps to the right: 5->1->2->3->4->NULL
rotate 2 steps to the right: 4->5->1->2->3->NULL

Example 2:

Input: 0->1->2->NULL, k = 4
Output: 2->0->1->NULL
Explanation:
rotate 1 steps to the right: 2->0->1->NULL
rotate 2 steps to the right: 1->2->0->NULL
rotate 3 steps to the right: 0->1->2->NULL
rotate 4 steps to the right: 2->0->1->NULL

#Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def rotateRight(self, head, k):
        """
        :type head: ListNode
        :type k: int
        :rtype: ListNode
        """
        #首先过一遍链表,计算总共有多少个元素
        current = head
        size = 0
        while current:
            size += 1
            tail = current
            current = current.next
        if size == 0:
            return None
        if k%size == 0:
            return head
        else:
            index = head
            for i in range (size-k%size-1):
                index = index.next
            last = index
            new_head = last.next
            tail.next = head
            last.next = None
            return new_head

猜你喜欢

转载自blog.csdn.net/pku_langzi/article/details/85080325