《Cracking the Coding Interview程序员面试金典》----猫狗收容所
生活随笔
收集整理的這篇文章主要介紹了
《Cracking the Coding Interview程序员面试金典》----猫狗收容所
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
時間限制:3秒? 空間限制:32768K? 熱度指數:1535 本題知識點:? 棧? 隊列 ?算法知識視頻講解
題目描述
? ? ? ??有家動物收容所只收留貓和狗,但有特殊的收養規則,收養人有兩種收養方式,第一種為直接收養所有動物中最早進入收容所的,第二種為選擇收養的動物類型(貓或狗),并收養該種動物中最早進入收容所的。
? ? ? ?給定一個操作序列int[][2]?ope(C++中為vector<vector<int>>)代表所有事件。若第一個元素為1,則代表有動物進入收容所,第二個元素為動物的編號,正數代表狗,負數代表貓;若第一個元素為2,則代表有人收養動物,第二個元素若為0,則采取第一種收養方式,若為1,則指定收養狗,若為-1則指定收養貓。請按順序返回收養的序列。若出現不合法的操作,即沒有可以符合領養要求的動物,則將這次領養操作忽略。
測試樣例: [[1,1],[1,-1],[2,0],[2,-1]]返回:[1,-1]
代碼如下:
class CatDogAsylum { public:vector<int> asylum(vector<vector<int> > ope) {vector<int>result;int flag; int len=ope.size(); for(int i=0;i<len;i++) { if(ope[i][0]==2) { flag=0; if(ope[i][1]==0)//按照第一種方式選動物; { for(int j=0;j<i&&flag==0;j++) { if(ope[j][0]==1)//最早的動物; { result.push_back(ope[j][1]); ope[j][0]=-1;//表示已經選過; flag=1; } } } else if (ope[i][1]==1)//取第一個狗; { for(int j=0;j<i&&flag==0;j++) { if(ope[j][0]==1&&ope[j][1]>=0) { result.push_back(ope[j][1]); ope[j][0]=-1;//表示已經選過; flag=1; } } } else//取第一個貓; { for(int j=0;j<i&&flag==0;j++) { if(ope[j][0]==1&&ope[j][1]<0) { result.push_back(ope[j][1]); ope[j][0]=-1;//表示已經選過; flag=1; } } } } } return result; } };
不懂的可以加我的QQ群:261035036(IT程序員面試寶典
群)?歡迎你的到來哦,看了博文給點腳印唄,謝謝啦~~
總結
以上是生活随笔為你收集整理的《Cracking the Coding Interview程序员面试金典》----猫狗收容所的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬虫入门爬取lpl选手价值排
- 下一篇: 配置猫抓,抓取网页视频