欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 48.日常算法

48.日常算法

2025/2/26 6:13:42 来源:https://blog.csdn.net/qq_74276498/article/details/145865399  浏览:    关键词:48.日常算法

1.面试题 03.06. 动物收容所

题目来源

动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeueCat。允许使用Java内置的LinkedList数据结构。enqueue方法有一个animal参数,animal[0]代表动物编号,animal[1]代表动物种类,其中 0 代表猫,1 代表狗。dequeue*方法返回一个列表[动物编号, 动物种类],若没有可以收养的动物,则返回[-1,-1]。

示例 1:
输入:
[“AnimalShelf”, “enqueue”, “enqueue”, “dequeueCat”, “dequeueDog”, “dequeueAny”]
[[], [[0, 0]], [[1, 0]], [], [], []]
输出:
[null,null,null,[0,0],[-1,-1],[1,0]]

class AnimalShelf {queue<int> cats, dogs;
public:AnimalShelf() {}void enqueue(vector<int> animal) {int id = animal[0], type = animal[1];if (type) dogs.push(id);else cats.push(id);}vector<int> dequeueAny() {if (cats.empty()) return dequeueDog();else if (dogs.empty()) return dequeueCat();if (cats.front() < dogs.front()) return dequeueCat();return dequeueDog();}vector<int> dequeueDog() {if(dogs.empty()) return {-1, -1};int id = dogs.front();dogs.pop();return {id, 1};}vector<int> dequeueCat() {if(cats.empty()) return {-1, -1}; int id = cats.front();cats.pop();return {id, 0};}
};

1.字母异位词分组

题目来源

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string, vector<string>> hash;for (auto & s : strs){string temp = s;sort(temp.begin(), temp.end());hash[temp].push_back(s);}vector<vector<string>> ret;for (auto & [x, y] : hash){ret.push_back(y);}return ret;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词