模拟——机器翻译

题目来源

呜呜,简直痛哭流涕,第一次发现Java带给我的无限的快乐,Java的很多已经写好的类还是比较好用的,重要的是我们怎么去理解和使用它,每天的一点点进步是漫长且充满着幸福的。

AC这题目的关键是学会构造一个阻塞队列,,如下

ArrayBlockingQueue<Integer> Q = new ArrayBlockingQueue<>(capa);

不多说,代码如下,希望可以解锁更多知识盲点。

/*
 * 日期:2020.02.26
 * 作者:城主
 * 题目:洛古普及题-机器翻译
 * 思路:创建一个队列,全都赋值为0,遇到单词查询一次在
 *       内存中是否有这个单词,如果有,继续下一个,如
 *       果没有,查询次数加一,将该单词添加到队尾,如
 *       果,这两一个很重要的原则是“先进先出”准则。
 */
import java.util.Scanner;
//import java.util.PriorityQueue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.AbstractQueue;
import java.util.Collection;
import java.util.PriorityQueue;
import java.util.Random;


public class Test {
	
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		//input 
		int capa=scan.nextInt();//capacity of 
		ArrayBlockingQueue<Integer> Q = new ArrayBlockingQueue<>(capa);
	//	PriorityQueue<Integer> Q = new PriorityQueue<>(capa);
		int ar_le=scan.nextInt();
		//input word and deal with
		int search_num=0;
	    for(int i=1;i<=ar_le;i++)
	    {
	    	int word=scan.nextInt();//
	    	if(Q.contains(word))continue;
	    	else
	    	{
	    		//if(i%capa==0)
	    		if(Q.size()==capa)
	    		{
	    			Q.poll();
	    		}
	    		Q.add(word);
    			search_num++;
	    	}
	    	
	    }
	   
	   System.out.println(search_num);
		
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值