41 lines
863 B
Ruby
41 lines
863 B
Ruby
#Given an array reverse it without using extra-space
|
|
#Time-complexity: O(n), Auxiliary-space: O(1)
|
|
|
|
# Iterative
|
|
def reverse_array(a)
|
|
right=a.length-1
|
|
left=0
|
|
while(left<right)
|
|
#swap the elements
|
|
temp=a[left] #Swapping can be like done like this a[left],a[right]=a[right],a[left]
|
|
a[left]=a[right]
|
|
a[right]=temp
|
|
|
|
left+=1
|
|
right-=1
|
|
end
|
|
print a
|
|
end
|
|
|
|
reverse_array([1,2,3,4,5]) # => [5,4,3,2,1]
|
|
|
|
# Recursive
|
|
|
|
#driver program
|
|
def driver_program(a)
|
|
right=a.length-1
|
|
left=0
|
|
reverse_array(a,left,right)
|
|
print a
|
|
end
|
|
def reverse_array(a,left,right)
|
|
|
|
return if left>=right
|
|
#swap the elements
|
|
temp=a[left]
|
|
a[left]=a[right]
|
|
a[right]=temp
|
|
reverse_array(a,left+1,right-1)
|
|
end
|
|
|
|
driver_program([1,2,3,4,5]) # => [5,4,3,2,1] |