61. Rotate List

Medium


Given the head of a linked list, rotate the list to the right by k places.

 

Example 1:

Input: head = [1,2,3,4,5], k = 2
Output: [4,5,1,2,3]

Example 2:

Input: head = [0,1,2], k = 4
Output: [2,0,1]

 

Constraints:

  • The number of nodes in the list is in the range [0, 500].
  • -100 <= Node.val <= 100
  • 0 <= k <= 2 * 109




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

    def get_size(self, head):
        size = 1;
        node = head
        while node:
            if node.next == None:
                node.next = head
                break
            node = node.next
            size+=1
        return size

    def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
        if k == 0:
            return head

        if not head:
            return head
        elif not head.next:
            return head
        size = self.get_size(head)
        target_pos = size - (k % size)-1


        node = head
        for i in range(target_pos):
            node = node.next

        new_head = node.next
        node.next = None

        return new_head

Random Note


  1. Effectively Using Django REST Framework Serializers
  2. How To Use DRF Serializers Effectively in Django
  3. My personal django rest framework serializer notes
  4. How to use DRF serializers effectively during write operations