LeetCode简单题之无法吃午餐的学生数量

news/2024/11/25 4:59:47/

题目

学校的自助午餐提供圆形和方形的三明治,分别用数字 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 。
    来源:力扣(LeetCode)

解题思路

  一个最最直接,最最简单的思路就是模拟。把students和sandwiches做成两个队列,然后队头进行判断和出队,队尾负责入队,多次遍历两个队列,如果在某一轮的对比中发现无法再出队了,则返回队列长度即可。

class Solution:def countStudents(self, students: List[int], sandwiches: List[int]) -> int:A=deque(students)B=deque(sandwiches)n=len(students)i=0while i<n:if A[0]!=B[0]:A.append(A.popleft())i+=1else:A.popleft()B.popleft()i=0n=len(A)return n

在这里插入图片描述


http://www.ppmy.cn/news/605330.html

相关文章

LeetCode中等题之寻找右区间

题目 给你一个区间数组 intervals &#xff0c;其中 intervals[i] [starti, endi] &#xff0c;且每个 starti 都 不同 。 区间 i 的 右侧区间 可以记作区间 j &#xff0c;并满足 startj > endi &#xff0c;且 startj 最小化 。 返回一个由每个区间 i 的 右侧区间 的最…

Problem I Rank LED题解 - 2018年第一届GXCPC广西大学生程序设计大赛 正式赛

Problem I Rank LED题解 题目大意 ‘0’到‘9’的数字亮线依次为{6、2、5、5、4、5、6、3、7、6}。 Luras想修改每条光线的位置&#xff0c;使她的新等级尽可能小&#xff0c;同时新等级也是一个不带任何前导零的正整数。 另外&#xff0c;光线总数应与开始时相同。 官方题…

内积和外积的物理意义-数学

内积和外积的物理意义Persistently关注2018.07.31 14:28:46字数 277阅读 6,276向量的内积 abab cos(θ) 向量a和b的长度之积再乘以它们之间的夹角的余弦&#xff1b;向量内积的几何解释就是一个向量在另一个向量上的投影的积&#xff0c;也就是同方向的积特别的。如果一个向量如…

LeetCode简单题之拿硬币

题目 桌上有 n 堆力扣币&#xff0c;每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆&#xff0c;拿走其中的一枚或者两枚&#xff0c;求拿完所有力扣币的最少次数。 示例 1&#xff1a; 输入&#xff1a;[4,2,1] 输出&#xff1a;4 解释&#xff1a;第一堆力扣…

使用余弦相似度算法计算文本相似度-数学

20211201 也就是效果 皮尔逊>余弦>欧式 余弦相似度的局限 皮尔逊的优势&#xff0c;相当于是改进版余弦相似度 欧式与 余弦 欧式侧重于直线距离 归一化之后的欧式和余弦的效果也不同 比如 0,1 和 1,0 tfidf用余弦相似度就足够,因为对在不同文档中相同的词的打分是一视…

LeetCode中等题之面试题 17.11. 单词距离

题目 有个内含单词的超大文本文件&#xff0c;给定任意两个不同的单词&#xff0c;找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次&#xff0c;而每次寻找的单词不同&#xff0c;你能对此优化吗? 示例&#xff1a; 输入&#xff1a;…

lasso,lars算法详细推导过程-数学

首发于程序员的伪文艺关注专栏写文章从Lasso开始说起李新春既可提刀立码&#xff0c;行遍天下&#xff1b;又可调参炼丹&#xff0c;卧于隆中。​关注他317 人赞同了该文章Lasso是Least Absolute Shrinkage and Selection Operator的简称&#xff0c;是一种采用了L1正则化&…