文章目录

  • 题目分析
  • 题目链接
  • 补充 Queue的操作

题目分析

题意重述:排队领食物,食物2种属性;学生有唯一偏好。如果学生看到食物队头是自己喜欢吃的,拿走;如果学生看到食物队头不是自己喜欢吃的,掉头回到自己队伍中继续排队。

问是否学生都能拿到食物,不能的话返回几个学生不能拿到食物。

思路:采用queue模拟学生和三明治, 模拟学生拿三明治的过程。采用一个标志t,看看学生循环了走了多少次。

时间复杂度分析: 最好情况是遍历一下学生队列,m个学生看到食物队头都不喜欢,整个过程结束;否则,肯定有一个学生拿走第一个食物;然后再次遍历学生队列,对新的食物队头进行观察,以此类推…,最坏情况是每循环m次,干掉1个食物,总共n个食物,所以时间复杂度O(m×n)O(m\times n)O(m×n).这里 m和n都是最大100,所以直接枚举10000次即可肯定可以过。

ac代码

class Solution {public:int countStudents(vector<int>& students, vector<int>& sandwiches) {queue<int> q,s;for(auto c:students) q.push(c);for(auto c:sandwiches) s.push(c);//暴力枚举10000次即可for(int i=0;i<10000 && q.size() && s.size();i++){if(q.front()==s.front()){q.pop(),s.pop();}else{int t=q.front();q.pop();q.push(t);}}return q.size();}
};

ac代码
下面退出条件:循环了队列长度 的5倍次,结果也过 了。

class Solution {public:int countStudents(vector<int>& students, vector<int>& sandwiches) {queue<int> q,s;for(auto c:students) q.push(c);for(auto c:sandwiches) s.push(c);int t=5*q.size(); //用于退出循环while(q.size()){ //学生队列不空if(q.front()==s.front()){q.pop(),s.pop(); }else{int t=q.front();q.pop();q.push(t);}t--;if(t==0) break;}return q.size();}
};

题目链接

Leetcode1700. 无法吃午餐的学生数量

补充 Queue的操作

queue队列:先进先出。

queue四个核心接口

push(): 将一个元素放入queue内
front(): 返回queue队头元素
back():返回 queue队尾元素
pop() 删除队头

Leetcode1700. 无法吃午餐的学生数量[C++题解]:模拟题简单,用queue相关推荐

  1. LeetCode 1700. 无法吃午餐的学生数量:真假模拟(极简代码) + 奇技淫巧

    [LetMeFly]1700.无法吃午餐的学生数量:真假模拟(极简代码) + 奇技淫巧 力扣题目链接:https://leetcode.cn/problems/number-of-students-u ...

  2. LeetCode 1700. 无法吃午餐的学生数量(队列模拟 / 不模拟)

    文章目录 1. 题目 2. 解题 1. 题目 学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示. 所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的. 餐厅里三明治的数量与 ...

  3. 1700. 无法吃午餐的学生数量

    学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示.所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的. 餐厅里三明治的数量与学生的数量相同.所有三明治都放在一个 栈 里,每 ...

  4. 1700. 无法吃午餐的学生数量(难度:简单)

    题目链接:https://leetcode.cn/problems/number-of-students-unable-to-eat-lunch/ 题目描述: 学校的自助午餐提供圆形和方形的三明治,分 ...

  5. 【无法吃午餐的学生数量】

    题目描述 学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示.所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的. 餐厅里三明治的数量与学生的数量相同.所有三明治都放在一个 ...

  6. 无法吃午餐的学生数量

    题目链接 无法吃午餐的学生数量 题目描述 注意 students.length == sandwiches.length 两个数组中的元素都要么为0,要么为1 解答思路 学生的位置可变,三明治的位置不 ...

  7. 大连学业水平考试计算机,2016年大连市普通高中学生学业水平考试模拟题(一)

    2016信息技术学业水平测试模拟题,带答案,必修+选修.多媒体,算法,数据库等 2016年辽宁省普通高中学生学业水平考试模拟题 信息技术 第I卷 选择题 一.选择题(本大题包括15小题,每小题3分,共 ...

  8. [猴子摘桃 ]有一只猴子,摘了很多桃子,每天吃下全部桃子数量一半+1, 第十天吃完之后发现还剩下1个,问:最初摘了多少

    解析:第一天的桃子数量等于第二天的桃子数量加一乘以二,以此类推. package com.homework;public class Demo17 {public static void main(S ...

  9. C语言——连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题, 如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做, 10道题做完

    /连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题, 如果输入答案正确,则显示"Right!",否则显示"Not correct!" ...

最新文章

  1. Linux查看网络信息
  2. 微信小程序适配iPhone X
  3. linux如何更改默认内核,[linux 内核] 设置内核的默认启动版本
  4. php+对象+toarray_PHP 对象、数组间的转换
  5. stack.pop()方法_C.示例中的Stack.Pop()方法
  6. poj 1426 BFS
  7. java BIO/NIO/AIO 学习
  8. 程序员的自我修养 pdf_软件特攻队|C/C++程序员的自我修养(5)
  9. windows平台oracle自动job,oracle删除oem中自动备份job
  10. assembly 输出ab中所有数_罗克韦尔(AB)PLC控制器选型(2)-CompactLogix 5370
  11. Linq 操作XML文件
  12. mysql workbench uml_Ubuntu 16.04下UML建模PowerDesigner的替代ERMaster和MySQL Workbench
  13. smb协议讲解_SMB/CIFS协议解析(一)
  14. TortoiseGit安装中文语言包无法切换语言
  15. 快递收件寄件JAVA小程序技术描述_解析“微快递”小程序的交互流程
  16. xv6 6.S081 Lab5: cow
  17. 鸿蒙os能支持c语言吗,再次确认华为鸿蒙OS系统采用C预言开发,流畅度相当ios
  18. android之媒体硬解OMX的实现
  19. 测试环境:一种更准确的测试环境温度监测方法
  20. Android加密篇 RSA

热门文章

  1. 编程5年了,养成的臭脾气
  2. 借助传感器用计算机测速度实验题,专家分析2015年高考命题趋势 内容设计将再创新...
  3. 用神经网络分类3*3矩阵
  4. 用特征光谱分类神经网络
  5. 测量一组平行线的质量和频率m=n+1
  6. linux gcc 静态编译,GCC 程序编译的静态链接和动态链接
  7. 【控制】传递函数的性质
  8. DFT实训教程笔记3(bibili版本)-SOC Scan Implementtation Scan Practice Session II
  9. 基础篇-verilog-FPGA实现频率相位调制DDS信号
  10. linux opendir readdir closedir 的使用