#include <queue>
#include <stack>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param students int整型vector
* @param sandwiches int整型vector
* @return int整型
*/
int countStudents(vector<int>& students, vector<int>& sandwiches) {
// write code here
queue<int> duilie;
stack<int> zhan;
for (int c : students){
duilie.push(c);
}
for (int j = sandwiches.size() - 1; j >= 0; j--){
zhan.push(sandwiches[j]);
}
int unchangedCount = 0; // 记录连续无法匹配的次数
while (!duilie.empty() && unchangedCount < duilie.size()) {
if (duilie.front() == zhan.top()) {
// 匹配成功:学生取走三明治
zhan.pop();
duilie.pop();
unchangedCount = 0; // 重置计数器
} else {
// 不匹配:学生移到队尾
int temp = duilie.front();
duilie.pop();
duilie.push(temp);
unchangedCount++; // 增加无法匹配的计数
}
}
return duilie.size();
}
};