Problem: Given an array A of integers, find the maximum of j - i subjected to the constraint of A[i] <= A[j].
If there is no solution possible, return -1.
Example :
A : [3 5 4 2] Output : 2 for the pair (3, 4)
INPUT: 9 8 7 -9 -1
EXPECTED OUTPUT: 1
MY OUTPUT: 0
The code I tried runs for all the cases except for the above given input, can anyone explain why is it failing that case and provide me with a rectified version?
My code(Python):
class Solution:
def maximumGap(self, A):
# write your method here
m=-1
for i in range(len(A)-1):
j=len(A)-i-1
if(A[i]<=A[j]):
m=max(m,j-i)
return m
I tried using 2 loops and it passes the above case but gives Time Limit Exceed for the other.
m=-1
for i in range(len(A)):
for j in range(len(A)):
if(A[i]<=A[j]):
m=max(m,j-i)
return m
You don't need to test every pair. Search from the end until you find an element that's
>=the current element, that will be the biggest gap.As an additional optimization, you can save the
jvalue of that element, and break out of the outer loop when you get past it.