题解 | 栈和排序
栈和排序
https://www.nowcoder.com/practice/b10a7ac681e9429e89a6a510e5799647
import sys
stack_size = int(input())
listInput = list(map(int, input().split()))
listStack = []
outputSequences = []
# 预处理后缀最大值
suffixMax = [0] * len(listInput)
suffixMax[-1] = listInput[-1]
for i in range(len(listInput) - 2, -1, -1):
suffixMax[i] = max(suffixMax[i + 1], listInput[i])
for i in range(len(listInput)):
if listInput[i] == suffixMax[i]:
listStack.append(listInput[i])
listStack.pop()
outputSequences.append(listInput[i])
else:
listStack.append(listInput[i])
for i in range(len(listStack) - 1, -1, -1):
outputSequences.append(listStack[i])
print(' '.join(map(str, outputSequences)))
