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

Question

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

Example 1:

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

Example 2:

roate2
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

Python Solution

# 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:
        if head==None:
            return None
        if head.next==None:
            return head
        l = 0
        p1 = head
        
        while p1:
            p1 = p1.next
            l+=1
        
        k = k%l
        
        if k==0:
            return head
        
        slow = head
        fast = head
        
        for _ in range(k):
            fast = fast.next
        
        while fast.next:
            fast = fast.next
            slow = slow.next
        
        h = slow.next
        slow.next = None
        fast.next = head
        
        return h
Abhishek Sharma
Abhishek Sharma

Started my Data Science journey in my 2nd year of college and since then continuously into it because of the magical powers of ML and continuously doing projects in almost every domain of AI like ML, DL, CV, NLP.

Articles: 520

Subscribe to our Newsletter

Subscribe to our newsletter and receive all latest projects...

Leave a Reply

Your email address will not be published. Required fields are marked *