文章目录
将左侧宝石放入右侧槽中,顺序由小到大
def fail(store):
store1=sorted(store,reverse=True)
for i in range(len(store)):
if store[i]!=store1[i]:
return True
return False
def second_lock(gems):
destination=[]
store=[]
left_gems=gems
store_length=0
while left_gems:
min_index=left_gems.index(min(left_gems))
while store and store[-1]<min(left_gems):
m=store.pop()
destination.append(m)
if left_gems:
destination.append(min(left_gems))
if min_index<len(left_gems)-1:
store.extend(list(reversed(left_gems[min_index+1:])))
store_length=len(store) if len(store)>=store_length else store_length
if fail(store):
return (False,-1)
left_gems=left_gems[:min_index]
if not left_gems:
return (True,store_length)
总结
有问题可以关注知乎Durling,talk to me.