问题描述
http://www.nowcoder.com/question/next?pid=1725826&qid=44805&tid=3976758
笔记
以一个vector作为缓存,查找成功的话就不操作,查找失败的话,如果缓存满了,就从vector的头部erase一个元素,然后再插入新的请求
代码
#include <iostream>
#include <vector>
using namespace std;
bool checkCache(vector<int> cache, int target)
{
for (int i = 0; i < cache.size(); i++)
{
if (cache[i] == target)
{
return true;
}
}
return false;
}
int main(int argc, const char * argv[]) {
// insert code here...
//std::cout << "Hello, World!\n";
int cacheSize;
int nreqs;
while (cin >> cacheSize >> nreqs)
{
vector<int> reqs;
reqs.clear();
for (int i = 0; i < nreqs; i++)
{
int in;
cin >> in;
reqs.push_back(in);
}
vector<int> cache;
cache.clear();
int res = 0;
for (int i = 0; i < nreqs; i++)
{
if (checkCache(cache, reqs[i]))
{
continue;
}
else
{
res++;
if (cache.size() == cacheSize)
{
cache.erase(cache.begin());
}
cache.push_back(reqs[i]);
}
}
cout << res << endl;
}
return 0;
}