题目描述有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。
给定一个操作序列int[][2]ope(C++中为vector
solution:
#-*-coding:utf-8-*-classCatDogAsylum:defasylum(self,ope):animals=[]cats,dogs=0,0res=[]foropinope:ifop[0]==1:ifop[1]>0:animals.append((1,op[1]))dogs+=1else:animals.append((0,op[1]))cats+=1else:ifop[1]==0:iflen(animals)==0:continuetemp=animals.pop(0)res.append(temp[1])iftemp[0]==1:dogs-=1else:cats-=1elifop[1]==1:ifdogs==0:continuedogs-=1foriinrange(len(animals)):ifanimals[i][0]==1:res.append(animals.pop(i)[1])breakelse:ifcats==0:continuecats-=1foriinrange(len(animals)):ifanimals[i][0]==0:res.append(animals.pop(i)[1])breakreturnres