algorithm - Given an array A,compute B s.t B[i] stores the nearest element to the left of A[i] which is smaller than A[i] -
given array a[1..n], want compute array b[1..n] such b[i] stores nearest element left of a[i] smaller a[i]. time complexity should o(n).
(for i>1,if there no such smaller elements left, b[i] contains a[i], , b[1]=a[1].)
example :
input : 6,9,12,17,11
output:6,6, 9, 12, 9
i thinking implementing stack,
put a[1] in b[1], push stack.
filling b[i],compare a[i] elements of stack , pop till smaller element.
push a[i] stack.
is above approach correct, , there cheaper solution?
your stack approach correct. works because if pop element bigger a[i], element never needed elements following a[i], because can use a[i] instead.
each element accessed twice, o(n).
Comments
Post a Comment