当前位置: 首页 > news >正文

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;
    }
};

相关文章:

  • Python入门 — 类
  • 在ubuntu如何安装samba软件?
  • lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并等。
  • day7作业
  • GB 44497-2024《智能网联汽车 自动驾驶数据记录系统》标准解读
  • 最新前端框架选型对比与建议(React/Vue/Svelte/Angular)
  • C++ | 高级教程 | 文件和流
  • Redis核心数据结构与底层实现
  • jmeter 如何做移动端的测试 特别是兼容性测试
  • 探索超声波的奥秘——定时器与PCA
  • 阳光高考瑞数6vmp算法还原
  • DeepSeek赋能大模型内容安全,网易易盾AIGC内容风控解决方案三大升级
  • Axios 取消请求
  • 微软推出Office免费版,限制诸多,只能编辑不能保存到本地
  • Ubuntu搭建esp32环境 配置打开AT指令集 websocket功能
  • C++引用
  • 【Deepseek+Browser-Use搭建 Web UI自动化】
  • AWS SDK for Java 1.x 403问题解决方法和原因
  • 【学习笔记】Kubernetes
  • React加TypeScript最新部署完整版
  • oss可以做视频网站吗/济南市新闻最新消息
  • 做venn的网站/广告免费发布信息
  • 西班牙语 b2b网站开发/如何做推广呢
  • wordpress增加登录页面/宝鸡seo优化公司
  • 绥化市建设局官方网站/北京建站优化
  • 学校网站怎么做的好坏/seo和点击付费的区别