请问这个Python栈的问题怎么设计比较好 思路已经有了 采纳率高

img

img

快写,能写多少是多少,
有问题我可以帮你改,
加油

n=int(input())
lis=list(map(int,input().split()))
stack=[]
ans=''
num=0
for i in lis:
if len(stack)==0:
for a in range(num,i+1):
stack.append(i)
ans=ans+(i-num)'0'
num=i
stack.pop(-1)
ans=ans+'1'
else:
if stack[-1]==i:
stack.pop(-1)
ans=ans+'1'
else:
if stack[-1]<i:
num=stack[-1]
for b in range[num,i]:
stack.append(b)
stack.pop(-1)
ans=ans+(i-num)
'0'+1
else:
break
if len(ans)==2*n:
print('YES')
print(ans)
else:
print('NO')

n=int(input())
lis= []
for i in range(n):  #每次input只能输入一个数字,所以我循环n次输入
    lis.append(int(input())

stack=[]
ans=''
num=0
for i in lis:
    if len(stack)==0:
        for a in range(num,i+1):
            stack.append(i)
            ans=ans+(i-num) * '0'
            num=i
            stack.pop(-1)
            ans=ans+'1'
   else:
       if stack[-1]==i:
            stack.pop(-1)
            ans=ans+'1'
      elif stack[-1] < i:
            num=stack[-1]
            for b in range[num,i]:
                  stack.append(b)
            stack.pop(-1)
            ans=ans+(i-num) * '0'+'1'
      else:
             break
if len(ans)==2*n:
      print('YES')
      print(ans)
else:
      print('NO')