题解 | 栈和排序

栈和排序

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)))

全部评论

相关推荐

12-27 22:36
门头沟学院 Java
点赞 评论 收藏
分享
12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务