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]
|