洛谷链接:https://www.luogu.com.cn/problem/P1540
题目大意:内存有限,单词滚动保存,查找单词得看内存中有无,无则覆盖之前单词,像队列一样不断更新。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int m=in.nextInt(); //内存容量
int n=in.nextInt(); //文章长度
int[] a=new int[m]; //定义m大小的数组
//题目说数据为 非负整数 -1记录空间没被占用
for(int i=0;i<m;i++) {
a[i]=-1;
}
int j; //定义全局变量,使得j的作用返回不止for循环
int index=0,count=0; //index用于记录顺序,count记录翻译次数
for(int i=0;i<n;i++) {
int word=in.nextInt();
for(j=0;j<m;j++) {
if(a[j]==word) {
break; //如果字典有,则不用翻译
}
}
if(j==m) {
//如果字典没有,则翻译次数加,存入新单词
count++;
a[index++%m]=word;
// index++; 上一步的细化
}
}
System.out.println(count);
}
}