分析
开两个队列,然后每次循环学生的队列stu,看其是否有与san队头元素相等的元素,如果没有,说明当前学生无法获得自己想要的三明治,直接退出。
C++ 代码
class Solution {
public:
queue<int> stu,san;
int countStudents(vector<int>& students, vector<int>& sandwiches) {
for(auto x:students) stu.push(x);
for(auto x:sandwiches) san.push(x);
while(san.size())
{
int f=0; //判断是否有学生得到想要的三明治
int len=stu.size();
for(int i=0;i<len;i++)
{
auto t=stu.front();
stu.pop();
if(t==san.front())
{
san.pop();
f=1;
break;
}
else{
stu.push(t);
}
}
if(!f) break; //没有直接退出
}
return san.size();
}
};