0% found this document useful (0 votes)
44 views5 pages

Array Right Rotate

The document discusses several approaches to right rotate a list in Python by n positions: 1. Traverse the first list and add elements to required positions in a second list, with time complexity O(n) 2. Use list slicing to take the last n elements and add the remaining elements, with time complexity O(n) 3. Similar to approach 2 but without using len(), with time complexity O(n) 4. Use the collections.deque module which allows fast rotation, with the deque's rotate() method and time complexity O(n) for the rotation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views5 pages

Array Right Rotate

The document discusses several approaches to right rotate a list in Python by n positions: 1. Traverse the first list and add elements to required positions in a second list, with time complexity O(n) 2. Use list slicing to take the last n elements and add the remaining elements, with time complexity O(n) 3. Similar to approach 2 but without using len(), with time complexity O(n) 4. Use the collections.deque module which allows fast rotation, with the deque's rotate() method and time complexity O(n) for the rotation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Python program to right rotate a list by n

● Difficulty Level : Easy


● Last Updated : 02 Jan, 2023

Read

Discuss

Courses @Sale

Practice

Video

Given a list and an integer n, write a Python program to right rotate the list by n
position.

Examples :

Input : n = 2, List_1 = [1, 2, 3, 4, 5, 6]

Output : List_1 = [5, 6, 1, 2, 3, 4]

Explanation: We get output list after right rotating (clockwise) given list by 2.

Input : n = 3, List_1 = [3, 0, 1, 4, 2, 3]

Output : List_1 = [4, 2, 3, 3, 0, 1]


Recommended: Please try your approach on {IDE} first, before moving on to the
solution.

Approach #1 : Traverse the first list one by one and then put the elements at
required places in a second list.

● Python3

# Python program to right rotate a list by n

# Returns the rotated list

def rightRotate(lists, num):


output_list = []

# Will add values from n to the new list


for item in range(len(lists) - num,
len(lists)):
output_list.append(lists[item])

# Will add the values before


# n to the end of new list
for item in range(0, len(lists) - num):
output_list.append(lists[item])

return output_list

# Driver Code
rotate_num = 3
list_1 = [1, 2, 3, 4, 5, 6]

print(rightRotate(list_1, rotate_num))
Output

[4, 5, 6, 1, 2, 3]

Time complexity : O(n)

Approach #2 : Another approach to solve this problem by using slicing


technique. One way of slicing list is by using len() method.

● Python3

# Python program to right rotate


# a list by n using list slicing
n = 3

list_1 = [1, 2, 3, 4, 5, 6]
list_1 = (list_1[len(list_1) -
n:len(list_1)]
+ list_1[0:len(list_1)
- n])
print(list_1)

Output

[4, 5, 6, 1, 2, 3]

Approach #3 : In the above method, last n elements of list_1 was taken and
then remaining elements of list_1. Another way is without using len() method.
● Python

# Right Rotating a list to n


positions
n = 3

list_1 = [1, 2, 3, 4, 5, 6]
if n>len(list_1):
n = int(n%len(list_1))
list_1 = (list_1[-n:] +
list_1[:-n])

print(list_1)

Output

[4, 5, 6, 1, 2, 3]

Time complexity : O(n)

Note : list_1[:] will return the whole list as the blank space on left of slicing
operator refers to start of list i.e 0 and blank space on right refers to ending
position of list.

Approach 4: One additional approach that could be used to right rotate a list by
n positions is to use the collections.deque module. This module provides a
doubly-linked list that supports fast insertion and deletion at both ends of the list,
as well as fast rotating operations.

To right rotate a list by n positions, you can use the rotate() method of the deque
object. This method rotates the elements of the list by the specified number of
positions to the right. For example:
● Python3

from collections import deque

# Create a deque object from the list


list_1 = [1, 2, 3, 4, 5, 6]
deque_1 = deque(list_1)

# Rotate the deque by 3 positions to


the right
deque_1.rotate(3)

# Convert the deque back to a list


list_1 = list(deque_1)

print(list_1) # Output: [4, 5, 6, 1,


2, 3]

Output

[4, 5, 6, 1, 2, 3]

The time complexity of the deque.rotate() method is O(n), because it involves


shifting all the elements in the deque by a certain number of positions. The time
complexity of the list() and deque() constructors is also O(n), because they
involve iterating through all the elements in the input list or deque and creating a
new list or deque with those elements.

The Auxiliary space complexity of the code is also O(n), because it involves
creating a new deque and a new list, both of which have the same size as the
input list.

You might also like