下一个更大元素的有趣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) 时间内对其进行优化。