沈阳德泰诺网站建设公司怎么样,安徽省工程信息网官网,wordpress 全局tag,邵阳seo排名文章目录1. 题目2. 解题1. 题目
学校的自助午餐提供圆形和方形的三明治#xff0c;分别用数字 0 和 1 表示。 所有学生站在一个队列里#xff0c;每个学生要么喜欢圆形的要么喜欢方形的。 餐厅里三明治的数量与学生的数量相同。
所有三明治都放在一个 栈 里#xff0c;每一…
文章目录1. 题目2. 解题1. 题目
学校的自助午餐提供圆形和方形的三明治分别用数字 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 链接https://leetcode-cn.com/problems/number-of-students-unable-to-eat-lunch 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
模拟
class Solution {
public:int countStudents(vectorint students, vectorint sandwiches) {queueint q;int n students.size();for(int i 0; i n; i) q.push(i);//排队int prevsize, cursize, i 0;while(1){int k q.size();prevsize q.size();//开始取餐人数while(k--){int id q.front();q.pop();if(students[id] sandwiches[i]){ //喜欢吃i;//餐被取走}else{q.push(id);//不喜欢吃排到队尾}}cursize q.size();if(cursize prevsize)//没有人吃到午餐结束break;}return q.size();}
};8 ms 8.8 MB C
不模拟做法
class Solution {
public:int countStudents(vectorint students, vectorint sandwiches) {queueint q;int one 0, zero 0, n students.size();for(auto s : students){if(s 1)one;elsezero;}//记录两种餐需求的同学数量for(auto s : sandwiches){if(s 0){if(zero)zero--;elsebreak;}else{if(one)one--;elsebreak;}} // 栈顶的餐没有同学可以拿走的时候停止return zeroone;}
};我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步