当前位置:   article > 正文

牛客题霸 栈和排序_牛客栈和排序python

牛客栈和排序python

题目描述

给你一个1->n的排列和一个栈,入栈顺序给定

你要在不打乱入栈顺序的情况下,对数组进行从大到小排序

当无法完全排序时,请输出字典序最大的出栈序列

 

示例1

输入

[2,1,5,3,4]

返回值

[5,4,3,1,2]

 

说明

2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈

 

备注:

n<=1e6

 

Python代码:

  1. #
  2. # 栈排序
  3. # @param a int整型一维数组 描述入栈顺序
  4. # @return int整型一维数组
  5. #
  6. class Solution:
  7. def solve(self , a ):
  8. # write code here
  9. s = []
  10. n = len(a)
  11. res = []
  12. vis = [0] * (n+1)
  13. for x in a:
  14. s.append(x)
  15. vis[x] = 1
  16. while n and vis[n]:
  17. n -= 1
  18. while s and n <= s[-1]:
  19. res.append(s[-1])
  20. s.pop()
  21. while s:
  22. res.append(s[-1])
  23. s.pop()
  24. return res

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/438037
推荐阅读
相关标签
  

闽ICP备14008679号