The Algorithms logo
The Algorithms
AboutDonate

Rotate List Right

/**
 * A LinkedList based solution for Rotating a List to the right by k places
 */

function main () {
  /*
  Problem Statement:
  Given a linked list, rotate the list to the right by k places, where k is non-negative.

  Note:
  * While Solving the problem in given link below, don't use main() function.
  * Just use only the code inside main() function.
  * The purpose of using main() function here is to avoid global variables.

  Link for the Problem: https://leetcode.com/problems/rotate-list/
  */
  // Reference to both head and k is given in the problem. So please ignore below two lines
  let head = ''
  let k = ''
  let i = 0
  let current = head
  while (current) {
    i++
    current = current.next
  }
  k %= i
  current = head
  let prev = null
  while (k--) {
    if (!current || !current.next) {
      return current
    } else {
      while (current.next) {
        prev = current
        current = current.next
      }
      prev.next = current.next
      current.next = head
      head = current
    }
  }
  return head
}

main()