第一行输入两个整数
(
,
),分别表示缓存容量和文章单词数。
第二行输入
个整数
(
),表示文章中按顺序出现的单词编码。
输出一个整数,表示翻译过程中缓存未命中(查词典)的总次数。
3 7 1 2 1 5 4 4 1
5
翻译过程示例(缓存状态记录自左向右为最早到最近):
初始:空
1: miss,缓存->[1]
2: miss,缓存->[1,2]
1: hit,缓存->[1,2]
5: miss,缓存->[1,2,5]
4: miss,缓存->[2,5,4](替换1)
4: hit,缓存->[2,5,4]
1: miss,缓存->[5,4,1](替换2)
共 miss 5 次。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int m,n;
Queue<Integer> queue = new LinkedList<>();
m = in.nextInt();
n = in.nextInt();
int ans = 0;
while(n-->0){
int temp = in.nextInt();
if(!queue.contains(temp)){
queue.offer(temp);
if(queue.size()>m)queue.poll();
ans++;
}
}
System.out.println(ans);
}
}