def stackQue(n,ls): """ 假设入栈序列是1-n,如何判断一个给定的出栈序列是合法的,判断依据: 出栈序列中的每一个数的后面比它小的数是按照递减顺序排序的 """ if len(ls)!=n: return False i=0 while i<len(ls): tmpl=[c for c in ls[i:] if ls[i]>c] if not isSort(tmpl): return False i+=1 return True def isSort(ls,reverse=False): """ 判断一个序列是否按照顺序排列,reverse=True正序 """ print(ls) if not reverse: i=0 while i<len(ls)-1: if ls[i]<ls[i+1]: return False i+=1 return True else: i=0 while i<len(ls)-1: if ls[i]>ls[i+1]: return False i+=1 return True if __name__=='__main__': print(stackQue(5,[4,5,2,3,1]))