48.日常算法

embedded/2025/2/27 22:05:20/

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

http://www.ppmy.cn/embedded/167641.html

相关文章

如何在 WPS 中集成 DeepSeek

如何在 WPS 中集成 DeepSeek&#xff1a;从零基础到高阶开发的完整指南 DeepSeek 作为国内领先的 AI 办公助手&#xff0c;与 WPS 的深度整合可显著提升文档处理效率。本文提供 ​4 种集成方案&#xff0c;覆盖从「小白用户」到「企业开发者」的全场景需求&#xff0c;并包含 …

Apache Pinpoint工具介绍

Apache Pinpoint&#xff1a;分布式系统性能分析与链路追踪 一、Pinpoint 简介 Apache Pinpoint 是一个开源的 分布式追踪系统&#xff0c;专为微服务架构设计&#xff0c;支持 HTTP、RPC、MQTT 等协议的调用链追踪。其核心功能包括&#xff1a; 链路可视化&#xff1a;展示…

【代码解读】阿里最新开源视频生成模型 Wan 2.1 实现解析

昨晚阿里巴巴开源了最新视频生成模型的代码和权重&#xff0c;从给出的 demo 效果来看还是非常惊艳的。这个模型目前也是在 VBench 榜单上排到了第一名&#xff0c;超越了 Sora 以及 HunyuanVideo 等一系列知名方法。 从官方给出的方法架构图来说&#xff0c;Wan 2.1 并没有使…

LangChain构建行业知识库实践:从架构设计到生产部署全指南

文章目录 引言:行业知识库的进化挑战一、系统架构设计1.1 核心组件拓扑1.2 模块化设计原则二、关键技术实现2.1 文档预处理流水线2.2 混合检索增强三、领域适配优化3.1 医学知识图谱融合3.2 检索结果重排序算法四、生产环境部署4.1 性能优化方案4.2 安全防护体系五、评估与调优…

马士兵java面试八股文及答案

马士兵java面试八股文及答案 Java面向对象有哪些特征&#xff0c;如何应用HashMap原理是什么&#xff0c;在jdk1.7和1.8中有什么区别ArrayList和LinkedList有什么区别高并发中的集合有哪些问题jdk1.8的新特性有哪些 一、接口的默认方法二、Lambda 表达式三、函数式接口四、方法…

根据经纬度获取时区并返回当前时间

我使用的是 NodaTime 可以按照程序包或者引用dll文件 引用命名空间 using NodaTime; using NodaTime.TimeZones; 代码 var systemClock SystemClock.Instance; var timeZoneDb TzdbDateTimeZoneSource.Default; var timeZone timeZoneDb.ForId(timeZoneId); var n…

Pytest中5种不同的方法解析JSON数据

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 JavaScript 对象表示法&#xff08;JSON&#xff09;可以说是网络上最流行的数据交…

rust之Tokio学习1

任务 一个 Tokio 任务是一个异步的绿色线程&#xff0c;它们通过 tokio::spawn 进行创建&#xff0c;该函数会返回一个 JoinHandle 类型的句柄 调用者可以使用该句柄跟创建的任务进行交互 示例 spawn 函数的参数是一个 async 语句块&#xff0c;该语句块甚至可以返回一个值&…