📜  下一个更大元素的有趣Python实现

📅  最后修改于: 2022-05-13 01:54:38.887000             🧑  作者: Mango

下一个更大元素的有趣Python实现

给定一个数组,打印每个元素的下一个更大元素 (NGE)。元素 x 的下一个更大元素是数组中 x 右侧的第一个更大元素。对于不存在更大元素的元素,将下一个更大元素视为-1。

例子:

Input : 11, 13, 21, 3, 9, 12
Output :
11 --> 21
13 --> 21
21 --> -1
3 --> 12
9 --> 12
12 --> -1

Input : 10, 9, 8, 7, 6, 5, 4, 3, 2
Output :
10 --> -1
9 --> -1
8 --> -1
7 --> -1
6 --> -1
5 --> -1
4 --> -1
3 --> -1
2 --> -1

下面是一个简单的Python实现。

# Function for implementation of NGE
def NGE(arr):
  
    # Iterate through array to check for greatest element
    for i in range(0, len(arr)):
  
        # Find the maximum from i to end
        lead = max(arr[i:])
  
        # If max is same as the i'th number then 
        # print -1 else print the maximum
        if (arr[i] == lead):
            print("% d --> % d" % (arr[i], -1))
        else:
            print("% d --> % d" % (arr[i], lead))
  
  
# Driver program
def main():
    arr = [11, 13, 21, 3, 9, 12]
    NGE(arr)
    arr = [10, 9, 8, 7, 6, 5, 4, 3, 2]
    NGE(arr)
  
if __name__ == '__main__':
    main()

请注意,上述解决方案的时间复杂度为 O(n*n)。我们可以使用堆栈在 O(n) 时间内对其进行优化。