日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网 在线编程 猫狗收容所

發布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网 在线编程 猫狗收容所 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

? ? ? ??有家動物收容所只收留貓和狗,但有特殊的收養規則,收養人有兩種收養方式,第一種為直接收養所有動物中最早進入收容所的,第二種為選擇收養的動物類型(貓或狗),并收養該種動物中最早進入收容所的。

? ? ? ?給定一個操作序列int[][2]?ope(C++中為vector<vector<int>>)代表所有事件。若第一個元素為1,則代表有動物進入收容所,第二個元素為動物的編號,正數代表狗,負數代表貓;若第一個元素為2,則代表有人收養動物,第二個元素若為0,則采取第一種收養方式,若為1,則指定收養狗,若為-1則指定收養貓。請按順序返回收養的序列。若出現不合法的操作,即沒有可以符合領養要求的動物,則將這次領養操作忽略。

測試樣例:

[[1,1],[1,-1],[2,0],[2,-1]] 返回:[1,-1]

代碼可以簡化一下,不過時間復雜度上就這樣了。

import java.util.*;public class CatDogAsylum {public static ArrayList<Integer> asylum(int[][] ope) {Queue<Integer[]> cat = new LinkedList<>();Queue<Integer[]> dog = new LinkedList<>();ArrayList<Integer> asylum = new ArrayList<>();for (int i = 0; i < ope.length; i++) {if (ope[i][0] == 1) {if (ope[i][1] > 0)dog.offer(new Integer[] { i, ope[i][1] });if (ope[i][1] < 0)cat.offer(new Integer[] { i, ope[i][1] });} else if (ope[i][0] == 2) {if (ope[i][1] == 0) {if (cat.isEmpty()) {asylum.add(dog.poll()[1]);} else if (dog.isEmpty()) {asylum.add(cat.poll()[1]);} else if (dog.peek()[0] > cat.peek()[0]) {asylum.add(cat.poll()[1]);} else if (dog.peek()[0] < cat.peek()[0]) {asylum.add(dog.poll()[1]);}} else if (ope[i][1] == 1 && !dog.isEmpty()) {asylum.add(dog.poll()[1]);} else if (ope[i][1] == -1 && !cat.isEmpty()) {asylum.add(cat.poll()[1]);}continue;}}return asylum;} }

?

總結

以上是生活随笔為你收集整理的牛客网 在线编程 猫狗收容所的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。