Skip to content
Programmingoneonone
Programmingoneonone
  • Home
  • CS Subjects
    • Internet of Things (IoT)
    • Digital Communication
    • Human Values
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
Programmingoneonone

Leetcode Rotate List problem solution

YASH PAL, 31 July 2024

In this Leetcode Rotate List problem solution we have given the head of a linked list, rotate the list to the right by k places.

leetcode rotate list problem solution

Problem solution in Python.

class Solution:
    def rotateRight(self, head: ListNode, k: int) -> ListNode:
        if head == None: return 
        values = []
        dummay = ListNode()
        cur = dummay
        while head:
            values.append(head.val)
            head = head.next
        for i in range(k % len(values)):
            values.insert(0,values.pop())
        for j in values:
            cur.next = ListNode(j)
            cur = cur.next
        return dummay.next

Problem solution in Java.

public class Solution {
public ListNode rotateRight(ListNode head, int k) {
    if(head == null || head.next == null) return head;
    ListNode p = head;
    int count = 1;
    while(p.next!= null){
        count++;
        p = p.next;
    }
    k = k % count;
    p.next = head;      /*make a circle here*/
    p = head;
    for(int i = 0; i < count - k - 1; i++){
        p = p.next;
    }
    ListNode dummy = p.next;
    p.next = null;
    return dummy;
}
}

Problem solution in C++.

class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        if(head == NULL || head->next == NULL) return head;
        int nodes = 1;
        ListNode *temp = head;
        while(temp->next != NULL){
            temp = temp->next;
            nodes++;
        }
        k = k % nodes;
        if(k == 0)return head;
        int i = 0;
        ListNode *cur = head;
        while(i<nodes-k-1){
            cur = cur->next;
            i++;
        }
        ListNode *newHead = cur->next;
        temp->next = head;
        cur->next = NULL;
        return newHead;
    }
};

Problem solution in C.

struct ListNode* rotateRight(struct ListNode* head, int k){
    int length = 0;
    struct ListNode* tmp;
    struct ListNode* tmp2;
    tmp = head;
    while (tmp) {
        length++;
        tmp2 = tmp;
        tmp = tmp->next;
    }
    if (length == 0) {
        return head;
    }
    k = k % length;
    tmp = head;
    for (int i = 0; i < length - k - 1; i++) {
        tmp = tmp->next;
    }
    tmp2->next = head;
    head = tmp->next;
    tmp->next = NULL;
    return head;
}

coding problems solutions

Post navigation

Previous post
Next post

Pages

  • About US
  • Contact US
  • Privacy Policy

Programing Practice

  • C Programs
  • java Programs

HackerRank Solutions

  • C
  • C++
  • Java
  • Python
  • Algorithm

Other

  • Leetcode Solutions
  • Interview Preparation

Programming Tutorials

  • DSA
  • C

CS Subjects

  • Digital Communication
  • Human Values
  • Internet Of Things
  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2025 Programmingoneonone | WordPress Theme by SuperbThemes