Python3 Program to Rotate all odd numbers right and all even numbers left in an Array of 1 to N
Given a permutation arrays A[] consisting of N numbers in range [1, N], the task is to left rotate all the even numbers and right rotate all the odd numbers of the permutation and print the updated permutation.
Note: N is always even.
Examples:
Input: A = {1, 2, 3, 4, 5, 6, 7, 8}
Output: {7, 4, 1, 6, 3, 8, 5, 2}
Explanation:
Even element = {2, 4, 6, 8}
Odd element = {1, 3, 5, 7}
Left rotate of even number = {4, 6, 8, 2}
Right rotate of odd number = {7, 1, 3, 5}
Combining Both odd and even number alternatively.
Input: A = {1, 2, 3, 4, 5, 6}
Output: {5, 4, 1, 6, 3, 2}
Approach:
- It is clear that the odd elements are always on even index and even elements are always laying on odd index.
- To do left rotation of even number we choose only odd indices.
- To do right rotation of odd number we choose only even indices.
- Print the updated array.
Below is the implementation of the above approach:
Python3
# Python3 program for the above approach # Function to left rotate def left_rotate(arr): last = arr[ 1 ]; for i in range ( 3 , len (arr), 2 ): arr[i - 2 ] = arr[i] arr[ len (arr) - 1 ] = last # Function to right rotate def right_rotate(arr): start = arr[ len (arr) - 2 ] for i in range ( len (arr) - 4 , - 1 , - 2 ): arr[i + 2 ] = arr[i] arr[ 0 ] = start # Function to rotate the array def rotate(arr): left_rotate(arr) right_rotate(arr) for i in range ( len (arr)): print (arr[i], end = " " ) # Driver code arr = [ 1 , 2 , 3 , 4 , 5 , 6 ] rotate(arr); # This code is contributed by sanjoy_62 |
5 4 1 6 3 2
Time Complexity: O(N)
Auxiliary Space: O(1)
Please refer complete article on Rotate all odd numbers right and all even numbers left in an Array of 1 to N for more details!
Please Login to comment...