Stack_Queue 猫狗队列问题 Cat dog queue @CareerCup

【程序员代码面试指南 编程笔记】猫狗队列(C++解法) 题目 原题目使用Java作为示范,本文章提供C++解法。 猫狗两个类的定义如下public class Pet { private String type; public Pet(String type){ this.type = type; } public String getPetType(){ re 阅读详情

An animal shelter holds only dogs and cats, and operates ona strictly “first in, first out” basis. People must adopt either the “oldest”(based on arrival time) of all animals at the shelter, or they can selectwhether they could prefer a dog or a cat (and will receive the oldest animal ofthat type). They cannot select which specific animal they would like. Createthe data structures to maintain this system and implement operations such asenqueue, dequeueAny, dequeueDog and dequeueCat. You may use the built-inLinkedList data structure.


大意是有一个动物收养站,猫或狗都不停地被收养进来,同时也有人想领养。规则是领养人可以挑选猫或狗,但不能挑具体哪一只,只能挑选早被收养的那只动物。


思路:

分别建猫和狗两个队列就搞定了。



package Stack_Queue;

import java.util.LinkedList;

public class S3_7 {

	// ============================== Animal
	static abstract class Animal {
		private int order; 
		protected String name;
		public Animal(String n) {
			name = n;
		}

		public abstract String name();

		public void setOrder(int ord) {
			order = ord;
		}

		public int getOrder() {
			return order;
		}

		public boolean isOlderThan(Animal a) {
			return this.order < a.getOrder();
		}
	}
	
	// ============================== Cat
	static class Cat extends Animal {
		public Cat(String n) {
			super(n);
		}

		public String name() {
			return "Cat: " + name;
		}
	}
	
	static class Dog extends Animal {
		public Dog(String n) {
			super(n);
		}

		public String name() {
			return "Dog: " + name;
		}
	}
	
	// ============================== AnimalQueue
	static class AnimalQueue {
		LinkedList<Dog> dogs = new LinkedList<Dog>();
		LinkedList<Cat> cats = new LinkedList<Cat>();
		private int order = 0;

		public void enqueue(Animal a) {
			a.setOrder(order);
			order++;
			if (a instanceof Dog) {
				dogs.addLast((Dog) a);
			} else if (a instanceof Cat) {
				cats.addLast((Cat)a);
			}
		}

		public Animal dequeueAny() {
			if (dogs.size() == 0) {
				return dequeueCats();
			} else if (cats.size() == 0) {
				return dequeueDogs();
			}
			Dog dog = dogs.peek();
			Cat cat = cats.peek();
			if (dog.isOlderThan(cat)) {
				return dogs.poll();
			} else {
				return cats.poll();
			}
		}

		public Animal peek() {
			if (dogs.size() == 0) {
				return cats.peek();
			} else if (cats.size() == 0) {
				return dogs.peek();
			}
			Dog dog = dogs.peek();
			Cat cat = cats.peek();
			if (dog.isOlderThan(cat)) {
				return dog;
			} else {
				return cat;
			}
		}

		public int size() {
			return dogs.size() + cats.size();
		}

		public Dog dequeueDogs() {
			return dogs.poll();
		}

		public Dog peekDogs() {
			return dogs.peek();
		}

		public Cat dequeueCats() {
			return cats.poll();
		}

		public Cat peekCats() {
			return cats.peek();
		}
	}
	
	
	public static void main(String[] args) {
		AnimalQueue animals = new AnimalQueue();
		animals.enqueue(new Cat("Callie"));
		animals.enqueue(new Cat("Kiki"));
		animals.enqueue(new Dog("Fido"));
		animals.enqueue(new Dog("Dora"));
		animals.enqueue(new Cat("Kari"));
		animals.enqueue(new Dog("Dexter"));
		animals.enqueue(new Dog("Dobo"));
		animals.enqueue(new Cat("Copa"));

		System.out.println(animals.dequeueAny().name());	
		System.out.println(animals.dequeueAny().name());	
		System.out.println(animals.dequeueAny().name());	

		animals.enqueue(new Dog("Dapa"));
		animals.enqueue(new Cat("Kilo"));

		while (animals.size() != 0) {
			System.out.println(animals.dequeueAny().name());	
		}
	}
}





用STM32F407做个USB声卡:从CubeMX配置到播放录音全功能实战(附源码) 本文详细介绍了如何使用STM32F407开发板实现USB音频设备的全功能实战,包括CubeMX配置、硬件连接、音频流处理和性能优化。通过双缓冲DMA机制和音频数据处理流程,开发者可以构建高质量的USB声卡系统,适用于录音和播放场景。附源码,助力快速上手STM32音频开发。 阅读详情

相关推荐

AD24-层次原理图的设计

4)在原理图关联对话框中双击需要放置方块图的子图,即激活方块图的放置,单击母图的空白处进行放置。3)设计-Create Sheet From Sheet,进入原理图关联对话框。4)放置-添加图纸入口,放置方块图的内部I/O端口并进行名称更改。2)放置-页面符,放置页面符,并执行Table完成属性设置。5)执行Ctrl+W,端口和内部I/O端口对应连接。1)创建一个工程并完成子图的每页原理图的设计。1)新建项目,创建Main原理图页。3)放置-的端口,放置方块图的端口。以上,就是层次原理图页的设计。

qq_52761962的博客 4919

猫狗队列(python)

# 猫狗队列 class Pet: def __init__(self, type): self._type = type def getPetType(self): return self._type class Dog(Pet): def __init__(self): super().__init__("d...

qq_40431898的博客 433

Eplan2022 复制已有的宏文件生成新的原理图宏文件

Eplan2022 新建原理图宏文件

haier123888的博客 1万+

猫狗队列问题

1、猫狗队列问题 宠物、狗和猫的类如下 class Pet{ private String type; public Pet(String type){ this.type=type; } public String getType(){ return this.type; } } class Dog extends Pe...

漫步云端 739

自动驾驶仿真:python和carsim联合仿真案例

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。提示:以下是本篇文章正文内容,下面案例可供参考1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在,具体内容如下图所示。

zataji的博客 9062

差分运放电路输出电压偏置设计解析

差分运算放大电路是信号处理中的基础模块,通过差分对管结构实现共模抑制与差模放大。其核心原理基于运放的虚短虚断特性,当电阻网络满足对称条件时,输出电压与输入差分成正比。在工业测量系统中,由于ADC通常仅支持正电压输入,需要通过偏置电路将双极性信号平移至正电压范围。典型设计采用精密基准电压源和匹配电阻网络,既保持信号完整性又满足系统接口要求。本文以-100V高压测量为例,详细解析了分压网络设计、参考电压选取以及电阻匹配等关键技术要点,为传感器接口电路设计提供实践参考。

weixin_35750747的博客 470

猫狗队列问题-python3

* 猫狗队列 : * 用户可以调用add方法将cat类或dog类的 实例放入队列中; * 用户可以调用pollAll方法,将队列中所有的实例按照进队列 的先后顺序依次弹出; * 用户可以调用pollDog方法,将队列中dog类的实例按照 进队列的先后顺序依次弹出; * 用户可以调用pollCat方法,将队列中cat类的实 例按照进队列的先后顺序依次弹出; * 用户可以调用isEmpt...

xujiao1179的博客 606

【AI编程】Qoder AI 编程工具从部署到深度使用实战详解

Qoder AI 编程工具从部署到深度使用实战详解

congge 8339

leetcode面试题:动物收容所(考查对队列的理解和运用)

1.执行enqueue(0,0),收容编号为0的猫咪,无返回值 2.执行enqueue(1,0),收容编号为1的猫咪,无返回值 3.执行dequeueCat(),现在要收养一只猫咪,只能收养最老的,所以就是编号为0的猫咪,返回值为[0,0] 4.执行dequeueDog(),现在要收养一只小狗,但是目前收容所没有狗狗,所以返回值为[-1,-1] 5.执行dequeueAny(),随机收养,不指定猫狗,选择目前收容所中最老的动物即可,此时收容所只剩一只编号为1的猫咪,所以返回[1,0]

m0_58681055的博客 367

「UG/NX」Block UI 曲线收集器CurveCollector

曲线收集器块用于选择一条或多条曲线,包括通过选择意图连接的末端曲线链。曲线选择意图用于此块,但它不支持“交点处停止”、“跟随圆角”、“中间链”和“特征内链”等规则选项。

何曾参静谧的博客 1090

【PINN物理信息网络】基于PINN物理信息网络求解泊松方程(python)

【PINN物理信息网络】基于PINN物理信息网络求解泊松方程(python)

k8291121的博客 2812

牛客网_算法初级班_Lesson3_part2_猫狗队列_转圈打印矩阵_旋转正方形矩阵_之字形打印矩阵_行列都排好序的矩阵中找数

一、猫狗队列 1、问题描述 宠物、狗和猫的类如下: public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } } public class Dog extends Pet { public...

禾白小三撇同学- 319

uniapp [全端兼容] - 详细实现下拉筛选菜单功能组件,下拉式筛选菜单效果,类似电商美团点击筛选项底部弹出列表点击选择后自动收起(详细示例代码,全端兼容小程序、安卓苹果app、h5网页、nvue

uni-app,vue2,vue3,向下弹出菜单包含筛选功能,日期筛选,下拉框选择器,下拉多条件筛选,下拉式筛选菜单,uniApp如何实现条件下拉筛选,Uniapp官方条件筛选组件,下拉框式条件筛选插件组件,最好用的插件组件,多端兼容,下拉菜单筛选,过滤筛选列表,下拉筛选栏,多列联动的条件筛选,下拉菜单地区和筛选,微信小程序,支付宝小程序,h5网页,移动端网站,安卓app,苹果app,nvue,uniapp所有平台兼容,下拉菜单筛选,下拉式条件筛选,下拉列表,点击排序,级联筛选,uniapp实现下拉筛选

🏆 前端领域优质创作者 1万+

栈和队列(4)--猫狗队列

宠物、狗和猫的类如下:public class Pet { private String type; public Pet(String type){ this.type = type; } public String getPetType(){ return this.type; } } public class Dog extends Pet { public Dog()

hzd12368的博客 1250

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

猫狗队列求解

一道猫狗队列的题的总结

Davidddl的博客 1205

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

程序员面试金典: 9.3栈与队列 3.7猫狗动物队列

#include #include #include #include using namespace std; /* 问题:有家动物收容所只收容狗与猫,并且严格遵守“先进先出”原则。在收养该收容所的动物时,收养人只能收养所有动物中 “最老”(根据进入收容所的时间长短)的动物,或者,可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能 自由挑选

qingyuanluofeng的专栏 1616

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

1栈和队列--猫狗队列

//宠物、猫、狗的类 public static class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return t

朵朵_calm 587

程序员代码面试指南 python实现(第一章 栈和队列 :猫狗队列)

程序员代码面试指南 python实现(第一章 栈和队列:猫狗队列 ...

Avery123123的博客 470

1.4猫狗队列

题目 实现猫狗队列 代码实现 //宠物类 class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } } //狗类 cla...

Forat 250

Codeforces Round #249 (Div. 2) A. Queue on Bus Stop

A. Queue on Bus Stop time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output It's that time of the year when the Rus

flyljg的专栏 811

第四题:猫狗队列问题

题目要求: 现有猫狗类如下: class Pet{ private String type; public Pet(String type){ this.type = type; } public String getType() { return type; } } class Dog extends Pet{ ...

isea_you's blog 569

猫狗队列问题 -- 基本算法 包含作者分析过程

package basic_class_03; import java.util.LinkedList; import java.util.Queue; /** * 猫狗队列 : * 用户可以调用add方法将cat类或dog类的 实例放入队列中; * 用户可以调用pollAll方法,将队列中所有的实例按照进队列 的先后顺序依次弹出; * 用户可以调用pollDog方法,将队列中...

汤小萌的博客 664

栈和队列 猫狗队列

【题目】 宠物,猫,和狗的类如下 class Pet{ private String type; Pet(String type) { this.type = type; } public String getPet(){ return type; } } class Dog extends Pet{ Dog(String type){ super(type); }

海向的博客 413

C++队列queue基本操作

http://blog.youkuaiyun.com/cindywry/article/details/51919282C++队列queue模板类的定义在&lt;queue&gt;头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。C++队列Queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。C++队列...

菜菜鸟的博客 3万+
上一篇: Stack_Queue 把栈排序 Sort a stack @CareerCup
下一篇: Tree_Graph 判断是否平衡二叉树 @CareerCup
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值