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

news2024/11/15 21:34:57

题目描述:

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

如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。
否则,这名学生会 放弃这个三明治 并回到队列的尾部。
这个过程会一直持续到队列里所有学生都不喜欢栈顶的三明治为止。

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

在这里插入图片描述
在这里插入图片描述

解题思路:

我们可以发现我们实质是每次遍历(以三明治栈顶元素为标准)比较三明治栈顶元素和学生队尾的元素是否相等,再进行接下来的操作。但是我们应该进一步明确不论学生队列如何移动都是要看学生队列目前剩下的是否存在和当前三明治栈顶元素相匹配的元素(更抽象的说就是和学生队列的顺序无关和当前存在的相匹配的个数有关),在明确该点后我们可以进行如下操作:

1.统计学生队列中分别喜欢圆形和三角形三明治的学生人数
2.遍历三明治栈,同时分别判断学生队列中对应的学生人数是否还大于0,若大于0则喜欢对应三明治的人数减一;若已经存在等于0则中断遍历
3最后返回最后剩下的喜欢圆形和方形三明治的人数的总和即为吃不上的人数。

代码:

class Solution {
    // Time Complexity: O(N)
    // Space Complexity: O(1)
    public int countStudents(int[] students, int[] sandwiches) {
        // 统计喜欢不同三明治的人数
        int countSquare = Arrays.stream(students).sum();
        int countCircle = students.length - countSquare;
        for (int i = 0; i < sandwiches.length; i++) {
            if (sandwiches[i] == 1 && countSquare > 0) {
                countSquare--;
            } else if (sandwiches[i] == 0 && countCircle > 0) {
                countCircle--;
            } else {
                break;
            }
        }
        return countCircle + countSquare;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

戴尔成就300015电脑出现错误代码怎么重新安装系统?

戴尔成就300015电脑出现错误代码怎么重新安装系统&#xff1f;有用户使用这款戴尔成就300015电脑的时候&#xff0c;总是在使用过程中无故的冒出错误代码&#xff0c;导致系统崩溃了。那么这个情况怎么去进行问题的修复呢&#xff1f;一起来看看详细的解决方法分享吧。 准备工作…

【深度学习】如何封装可维护的restiful api

这篇文章是用一个案例的形式尝试解决字段入参多了&#xff0c;在python这种风格的语言下如何维护的问题&#xff01; 文章目录前言1. json 是个好东西2. json 是个坏东西3. json维护数据的适用范围总结4.解决4.1 基础版4.2 进阶版4.2.1 行动4.2.2 精进4.3 另一种选择总结前言 …

立根铸魂 崛起数智时代 GBASE受邀出席操作系统产业峰会2022

2022年12月28日&#xff0c;由openEuler开源社区发起举办的操作系统产业峰会2022/openEuler Summit 2022正式召开。GBASE荣幸受邀参加统信软件“深耕数字化”主题论坛&#xff0c;分享GBase 8c基于鲲鹏生态的创新实践历程和经验。 操作系统产业峰会2022 -南大通用GBase 8c基于鲲…

使用Nordic的nrf52832控制指定从机(一主多从)

一主多从1. 想要实现的功能2. 从机3. 主机3.1 主从机连接个数设置3.2 扫描过滤3.3 连接和断开连接3.4 按键处理3.5 从机读写3.5.1 写3.5.1 读4运行效果1. 想要实现的功能 1.主机能连接多个从机&#xff08;主机作为控制器&#xff0c;从机作为节点&#xff09;。 2.主机能使用…

Java跨域问题

目录 1、跨域问题说明 ​2、跨域解决方案 2.1、局部跨域解决方案 2.1.1、CrossOrigin注解跨域 2.1.2、手动设置响应头 2.2、全局跨域解决方案 2.2.1、实现WebMvcConfigurer接口设置跨域 2.2.2、定义CorsFilter Bean实现跨域 2.2.3、重写ResponseBodyAdvice接口中的bef…

ros的launch文件知识

_node标签&#xff1a; 在指定机器上启动节点respawn"true|false"(可选) 如果节点退出&#xff0c;是否自动重启respawndelay"N"(可选) 如果 respawn 为 true,那么延迟N秒后启动节点required"true|false"(可选) 该节点是否必须&#xff0c;如果…

ZooKeeper 避坑实践:SnapCount 设置不合理导致磁盘爆满,服务不可用

作者&#xff1a;子葵 背景 在 ZooKeeper 的日常使用过程中&#xff0c;一个令人头疼的问题就是节点的磁盘容量问题&#xff0c;如果由于过大的 TPS 或者不适当的清理策略会导致集群中数据文件&#xff0c;日志文件的堆积&#xff0c;最终导致磁盘爆满&#xff0c;Server 宕机…

在线客服系统部署配置邮箱消息通知功能 - 唯一客服(v1kf.com) -开源私有化独立部署在线客服系统源码...

为在线客服系统设置邮件通知具有以下几个好处&#xff1a; 改善客户体验&#xff1a;邮件通知可以让客户实时收到新消息或更新通知&#xff0c;这有助于提高他们对您的服务的整体体验。 提高效率&#xff1a;邮件通知可以帮助提高客服团队的效率&#xff0c;因为它们会在新消息…

非专业人士如何完成数据采集?纯干货,一文看懂

写在前面&#xff1a; 本教程能够解决大部分人的数据采集及分析需求&#xff0c;实用、简单&#xff0c;尤其适合Excel大户、办公族、业务人员&#xff0c;或者不会编程、不懂数据分析理论的技术小白…… 来不及看的可以先点赞收藏&#xff01; 01 点对点的采集&#xff1a;…

吴恩达《机器学习》——欠拟合与过拟合

欠拟合与过拟合1. 方差与偏差模型的容量、过拟合和欠拟合2. Python代码实践2.1 拟合直线2.2 拟合多项式数据集、源文件可以在Github项目中获得 链接: https://github.com/Raymond-Yang-2001/AndrewNg-Machine-Learing-Homework 1. 方差与偏差 在数学上&#xff0c;估计的偏差…

Java基础漏洞(二)

继续填补自己的知识漏洞 1.&、&&、|、||之间的区别 &是逻辑与&#xff0c;而&&则是短路与。&和&&之间的区别是&#xff0c;在短路与&&的情况下&#xff0c;两个条件当第一个条件为假时&#xff0c;则不再执行第二个条件&#xf…

java学习之类方法

目录 一、基本介绍 二、类方法的调用 三、类方法的应用实例 代码 内存分析 运行结果 四、类方法的经典使用场景 五、类方法使用细节 第一条 第二条 第三条 第四条 第五条 第六条 六、练习 第一题 考察点 分析 结果 第二题 代码 考察点 结果 第三题 类方法 …

LeetCode498. 对角线遍历

LeetCode刷题记录 文章目录&#x1f4dc;题目描述&#x1f4a1;解题思路⌨C代码&#x1f4dc;题目描述 给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组返回这个矩阵中的所有元素。 示例1 输入&#xff1a;mat [[1,2,3],[4,5,6],[…

VUE2使用浏览器缓存的方法

分两种&#xff1a;localStorage和sessionStorage&#xff0c;它两统称webStorage 注意点1&#xff1a;localStorage对象和sessionStorage对象都是window对象下的&#xff0c;且方法都是一样的&#xff0c;默认”window.”可以省略,添加可用setItem(K,V)&#xff0c;查询可用ge…

数据库|scMethBank:单细胞全基因组 DNA 甲基化图谱数据库

甲基化是DNA的一种重要化学修饰&#xff0c;可调节基因的表达和关闭&#xff0c;与癌症、衰老、老年痴呆等许多疾病密切相关&#xff0c;是表观遗传学的重要研究内容之一。测序技术的发展&#xff0c;极大促进了单细胞DNA甲基化研究。然而大量数据的不断积累&#xff0c;对单细…

《HTTP权威指南》----HTTP报文

目录 报文流 报文的组成部分 报文语法 1.起始行 2.首部 通用首部&#xff0c;既可以出现在请求报文中也可以出现在响应报文中。 请求首部&#xff0c;提供更多有关请求的信息。 响应首部&#xff0c;提供更多有关响应的信息。 实体首部&#xff0c;描述主题的长度和内…

2022年,一个技术账号的年终独白,满篇都写着2个字:真难。

2022年&#xff0c;梦想橡皮擦这个账号经历了成长&#xff0c;突破&#xff0c;回归 2023年&#xff0c;适应改变 文章目录序2022年&#xff0c;梦想橡皮擦账号整体汇总原创博客KPI计划与完成总排名KPI计划与完成2022年&#xff0c;橡皮擦获得的荣誉2022年&#xff0c;做技术博…

日志收集系统架构

背景 应用服务器多&#xff0c;日志文件被分散在各个应用服务器上&#xff0c;需要依次登录每台设备才能查看日志&#xff0c;效率低下&#xff0c;且不利于服务器安全管控&#xff0c;加大生产服务器的风险&#xff1b;日志文件不统一&#xff0c;各项目日志没有统一的规范&a…

Python Django教程之实现天气应用程序

基本设置 将目录更改为天气 cd weather启动服务器 python manage.py runserver要检查服务器是否正在运行&#xff0c;请转到 Web 浏览器并输入为 URL。现在&#xff0c;您可以通过按以下命令停止服务器http://127.0.0.1:8000/ ctrl-c 实现 python manage.py startapp main…

Vehicle Speed Forecasting Based On GCN-LSTM Combined Model

GCN-LSTM模型预测道路交通车辆速度 Vehicle Speed Forecasting Based On GCN-LSTM Combined Model Summary This research offers a multistep traffic flow forecasting framework relying on interest spatial-temporal-graph neural network-long short-term memory neura…