题解 | #机器翻译#
机器翻译
https://ac.nowcoder.com/acm/problem/16589
import java.util.*;
public class Main{
public static void main(String[] srgs){
// queue和hashset同时记录数据,queue记录先后顺序,set记录内存里是否已经存在
Scanner sc=new Scanner(System.in);
int memSize=sc.nextInt();
int dicSize=sc.nextInt();
int a=0;//读取进的数
int res=0;//查找的次数
Queue<Integer> queue=new LinkedList<>();
HashSet<Integer> set=new HashSet<>();
while(sc.hasNextInt()){
a=sc.nextInt();
if(set.contains(a)){
continue;
}
else{
res++;//查询次数+1
if(set.size()<memSize){
//如果内存没满,直接加入
set.add(a);
queue.add(a);//set和queue都要加入
}
else{
int out=queue.poll();//queue记录最先进入的,让它出队列
set.remove(out);//set里也出
set.add(a);
queue.add(a);
}
}
}
System.out.println(res);
}
}
public class Main{
public static void main(String[] srgs){
// queue和hashset同时记录数据,queue记录先后顺序,set记录内存里是否已经存在
Scanner sc=new Scanner(System.in);
int memSize=sc.nextInt();
int dicSize=sc.nextInt();
int a=0;//读取进的数
int res=0;//查找的次数
Queue<Integer> queue=new LinkedList<>();
HashSet<Integer> set=new HashSet<>();
while(sc.hasNextInt()){
a=sc.nextInt();
if(set.contains(a)){
continue;
}
else{
res++;//查询次数+1
if(set.size()<memSize){
//如果内存没满,直接加入
set.add(a);
queue.add(a);//set和queue都要加入
}
else{
int out=queue.poll();//queue记录最先进入的,让它出队列
set.remove(out);//set里也出
set.add(a);
queue.add(a);
}
}
}
System.out.println(res);
}
}