Python | Reverse an array upto a given position
Last Updated :
15 Nov, 2023
Given an array arr[] and a position in array, k. Write a function name reverse (a[], k) such that it reverses subarray arr[0..k-1]. The extra space used should be O(1) and the time complexity should be O(k).
Example
Input: arr[] = {1, 2, 3, 4, 5, 6}, k = 4
Output: arr[] = {4, 3, 2, 1, 5, 6}
The extra
Python Reverse an Array Upto a Given Position
Below are the ways by which we can reverse an array up to a given position in Python:
- Using Slicing
- Using Two Pointers
- Using numpy.flip()
Reverse an Array Upto a Given range using Slicing
In this example, we are using Python Slicing to reverse an array up to a given position. This problem has an existing solution please refer to Reverse an array upto a given position link. We will solve this problem quickly in Python.
Python3
def reverseArrayUptoK( input , k):
print ( input [k - 1 :: - 1 ] + input [k:])
if __name__ = = "__main__" :
input = [ 1 , 2 , 3 , 4 , 5 , 6 ]
k = 4
reverseArrayUptoK( input , k)
|
Output
[4, 3, 2, 1, 5, 6]
Python Reverse an Array Using Two Pointers
In this example, we are using two pointers to reverse an array. In this we are reversing an array upto a given position uses two pointers to swap the elements of the array.
Python3
def reverseArray(arr, k):
start = 0
end = k - 1
while start < end:
arr[start], arr[end] = arr[end], arr[start]
start + = 1
end - = 1
return arr
arr = [ 1 , 2 , 3 , 4 , 5 , 6 ]
k = 4
print (reverseArray(arr, k))
|
Output
[4, 3, 2, 1, 5, 6]
Time complexity: O(k/2)
Auxiliary Space: O(1)
Reverse an Array Upto a Given Position using NumPy
In this example, we are using numpy.flip() to reverse an array up to a given position. Using flip() function we can reverse the subarray arr without using any loops. We first create a array from the given input array, and then we use the flip() function to reverse the subarray up to the k-1 position. We then convert the NumPy array back to a Python list and return it.
Python3
import numpy as np
def reverseArrayUptoK(arr, k):
arr[ 0 :k] = np.flip(arr[ 0 :k], axis = 0 )
return arr
if __name__ = = "__main__" :
arr = [ 1 , 2 , 3 , 4 , 5 , 6 ]
k = 4
print (reverseArrayUptoK(arr, k))
|
Output
[4, 3, 2, 1, 5, 6]
Time Complexity: O(k)
Auxiliary Space: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...