题解 | 栈和排序

栈和排序

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

全部评论

相关推荐

艾莉Alliy:拼多多好像很看重笔试,我秋招的时候笔试ak了,面试问了好多八股,全都说“不会”,照样全部通过了面试
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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