Next Greater Element Python
- Get link
- X
- Other Apps
PROGRAM TO FIND THE NEXT GREATER ELEMENT FOR EVERY ELEMENT
def createStack(): stack = [] return stackdef isEmpty(stack): return len(stack) == 0def push(stack, x): stack.append(x)def pop(stack): if isEmpty(stack): print("Error : stack underflow") else: return stack.pop()'''prints element and NGE pair for all elements of arr[] '''def printNGE(arr): s = createStack() element = 0 next = 0 # push the first element to stack push(s, arr[0]) # iterate for rest of the elements for i in range(1, len(arr), 1): next = arr[i] if isEmpty(s) == False: # if stack is not empty, then pop an element from stack element = pop(s) '''If the popped element is smaller than next, then a) print the pair b) keep popping while elements are smaller and stack is not empty ''' while element < next: print(str(element) + " -- " + str(next)) if isEmpty(s) == True: break element = pop(s) '''If element is greater than next, then push the element back ''' if element > next: push(s, element) '''push next to stack so that we can find next greater for it ''' push(s, next) '''After iterating over the loop, the remaining elements in stack do not have the next greater element, so print -1 for them ''' while isEmpty(s) == False: element = pop(s) next = -1 print(str(element) + " -- " + str(next))# Driver codearr = [11, 13, 21, 3]printNGE(arr)
OUTPUT:
11 --> 13 13 --> 21 3 --> -1 21 --> -1
- Get link
- X
- Other Apps
Comments
Post a Comment