题目来源于知识星球—英雄算法联盟,一月算法集训专题
前言
经过漫长的休息之后,在寒假以及新年到来之际再次刷起算法,培养自己的算法素养和算法思维,加油!今天只有一道题。
1700.无法吃午餐的学生数量(简单)
1.题目描述
2.解题思路
学生位置可变,三明治位置不可变。
先统计学生中对两种三明治的需求人数,之后遍历三明治数组,如果栈顶的三明治还有对应的学生,那么该三明治一定会被拿走,否则之后所有的三明治都无法在被拿走,输出剩下的学生数目,即无法拿走午餐的学生数目。
3.代码演示(C++)
class Solution
{
public:
int countStudents(vector<int>& students, vector<int>& sandwiches)
{
int num0=0;
int num1=0;
for(auto student:students)
{
if(student)
{
num1++;
}
else
{
num0++;
}
}
for(auto sandwich:sandwiches)
{
if(sandwich&&num1)
{
num1--;
}
else if(!sandwich&&num0)
{
num0--;
}
else
{
break;
}
}
return num0+num1;
}
};