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

2024-05-09 04:04
文章标签 数量 无法 学生 午餐 1700

本文主要是介绍1700.无法吃午餐的学生数量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

刷算法题:

第一遍:1.看5分钟,没思路看题解

2.通过题解改进自己的解法,并且要写每行的注释以及自己的思路。

3.思考自己做到了题解的哪一步,下次怎么才能做对(总结方法)

4.整理到自己的自媒体平台。

5.再刷重复的类似的题目,根据时间和任务安排刷哪几个板块

6.用c++语言 都刷过一遍了 就刷中等

一.题目

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

  • 如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。
  • 否则,这名学生会 放弃这个三明治 并回到队列的尾部。

这个过程会一直持续到队列里所有学生都不喜欢栈顶的三明治为止。

给你两个整数数组 students 和 sandwiches ,其中 sandwiches[i] 是栈里面第 i​​​​​​ 个三明治的类型(i = 0 是栈的顶部), students[j] 是初始队列里第 j​​​​​​ 名学生对三明治的喜好(j = 0 是队列的最开始位置)。请你返回无法吃午餐的学生数量。

示例 1:

输入:students = [1,1,0,0], sandwiches = [0,1,0,1]
输出:0 
解释:
- 最前面的学生放弃最顶上的三明治,并回到队列的末尾,学生队列变为 students = [1,0,0,1]。
- 最前面的学生放弃最顶上的三明治,并回到队列的末尾,学生队列变为 students = [0,0,1,1]。
- 最前面的学生拿走最顶上的三明治,剩余学生队列为 students = [0,1,1],三明治栈为 sandwiches = [1,0,1]。
- 最前面的学生放弃最顶上的三明治,并回到队列的末尾,学生队列变为 students = [1,1,0]。
- 最前面的学生拿走最顶上的三明治,剩余学生队列为 students = [1,0],三明治栈为 sandwiches = [0,1]。
- 最前面的学生放弃最顶上的三明治,并回到队列的末尾,学生队列变为 students = [0,1]。
- 最前面的学生拿走最顶上的三明治,剩余学生队列为 students = [1],三明治栈为 sandwiches = [1]。
- 最前面的学生拿走最顶上的三明治,剩余学生队列为 students = [],三明治栈为 sandwiches = []。
所以所有学生都有三明治吃。

示例 2:

输入:students = [1,1,1,0,0,1], sandwiches = [1,0,0,0,1,1]
输出:3

提示:

  • 1 <= students.length, sandwiches.length <= 100
  • students.length == sandwiches.length
  • sandwiches[i] 要么是 0 ,要么是 1 。
  • students[i] 要么是 0 ,要么是 1 。

二、反思

1.自己的解法

太执着于队列了,把数组的值交给队列,然后边界条件就没看了。

2.题目的解法 

class Solution {
public:int countStudents(vector<int>& students, vector<int>& sandwiches) {int s1=accumulate(students.begin(),students.end(),0);int s0=students.size()-s1;for(int i=0;i<students.size();i++){if(sandwiches[i]==0&&s0>0){s0--;}else if(sandwiches[i]==1&&s1>0){s1--;}else{break;}}return s1+s0;}
};

 3.思路的异同

观察到由于学生是队列,所以不用在意他顺序的相对关系!!!!

三.进步的地方

 其实还是数组的思维,虽然被归纳在队列里面。

 

这篇关于1700.无法吃午餐的学生数量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972333

相关文章

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

力扣SQL50 每位经理的下属员工数量 join

Problem: 1731. 每位经理的下属员工数量 👨‍🏫 参考题解 Code select m.Employee_id, m.name,count(*) reports_count,round(avg(e.age),0) average_agefrom Employees ejoin Employees mon e.reports_to = m.Employee_id

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种,一种是刚入门对pycharm进行conda环境配置的小白(例如我),不熟悉相关环境配置的操作和过程,还有一种是入坑pycharm有段时间的老手

青龙面板之Ninja无法安装无法拉库问题解决

因为之前的Ninja库已经不能用了,甚至新找到的库也不能用了,好尴尬,这里使用线下版本进行安装。 ninja安装新方法,其是方法还是原来的,只不过Ninja的库原作者删了,没法直接git了,但是我找到了源码包,我们可以直接通过宝塔面板拖进去。 源码包地址: https://download.csdn.net/download/u012134073/24813485 备用地址: 链接: h

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

在vscode中控制台运行python文件出现:无法将"pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 使用vscode开发python,需要安装python开发扩展: 本文已经安装,我们需要找的是python安装所在目录,本文实际路径如下: 如果在本文路径中没有此目录,请尝试在C盘中搜索 python,搜索到相关python目录后,点击Python 3.9进入目录,

【教师资格证考试综合素质——法律专项】学生伤害事故处理办法以及未成人犯罪法笔记相关练习题

目录 《学生伤害事故处理办法》 第一章 总 则 第二章 事故与责任 (谁有错,谁担责) 第三章  事故处理程序 第四章 事故损害的赔偿 第五章 事故责任者的处理 第六章 附 则 《中华人民共和国预防未成人犯罪法》 第一章 总 则 第二章 预防犯罪的教育 第三章 对不良行为的干预 第四章 对严重不良行为的矫治 第五章 对重新犯罪的预防 第六章法律责任 第七章 附 则

SD卡无法读取?数据恢复全攻略!

SD卡无法读取问题描述 在日常使用电子设备时,我们有时会遇到SD卡无法读取的情况。当插入SD卡后,设备可能无法识别或访问其中的数据,这给我们带来了诸多不便。SD卡无法读取,意味着存储在卡中的重要文件、照片和视频等资料可能面临丢失的风险。 SD卡无法读取原因分析 造成SD卡无法读取的原因有多种。首先,物理损坏是一个常见的原因,包括SD卡接口的磨损、弯曲或断裂等。其次,逻辑错误也可能导致SD

无法解决 equal to 运算中 Chinese_PRC_90_CI_AS 和 Chinese_PRC_BIN 之间的排序规则冲突

这是因为数据库 oa 和 hh 的编码格式不一样导致的 select  groupname as oper_id,name as oper_name from security_users where name collate Chinese_PRC_CI_AS not in (select oper_name from PDA_UsersAndPWD )

新建帐套提示“无法创建数据库!请检查目录…是否存在,以及系统空间是否充足.

1、在K/3安装路径下K3ERP文件夹下,找到DBFILE文件夹;2、右击单击“DBFILE”文件夹,选择“属性”→【安全】→【添加】,选择【高级】→【立即查找】→找到everyone用户;3、把该用户添加到【用户和组】中,并赋予“完全控制权限”。

金蝶盘点机金蝶PDA外购入库单校验防止收错货实现商品品种和数量校验

采购入库单校验 单据校验,是在电脑上已经存在这个单据,然后对商品实物跟单据进行核对,校验品种和数量。 传统的【采购入库单】校验方式是,供应商送货来,仓管员拿着纸质的【采购入库单】清点商品数量, 并一行行的记录商品数量,这个过程如果商品品种几十种,几百种,就很容核对错误,而且费时费力,搞得头晕眼花,工作强度比较大,对仓管员的责任心和细心程度要求比较高。 如果使用盘点机PDA进行【采购入库