Jessica's Reading Problem——POJ3320

Jessica's Reading Problem——POJ3320

题目大意:

Jessica 将面临考试,她只能临时抱佛脚的在短时间内将课本内的所有知识点过一轮,课本里面的P个知识点顺序混乱,而且重复。

要求找出课本的连续页数,这些页数满足:包含全部知识点,且是包含全部知识点的页数区间里面最短的。

尺取法解题。

import java.util.HashMap;
import java.util.HashSet; 
import java.util.Iterator;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        int P=reader.nextInt();
        Integer array[]=new Integer[P];
        HashSet set=new HashSet();
        for(int i=0;i<P;i++){
            array[i]=reader.nextInt();
            set.add(array[i]);
        }
        int n=set.size();    //知识点个数
        int s=0;    //开始结点
        int e=0;    //结束结点
        int num=0;    //统计目前知识点个数
        int res=P;
        HashMap map=new HashMap();
        while(true){
            while(e<P && num<n){
                if(map.containsKey(array[e])==false){    //尚未包含此知识点
                    map.put(array[e], 1);    //放入此知识点
                    num++;
                }else{
                    Integer newValue=(Integer)map.get(array[e])+1;    //旧知识点
                    map.put(array[e], newValue);
                }
                e++;
            }
            if(num<n){
                break;
            }
            res=Math.min(res,e-s);
            Integer newValue=(Integer)map.get(array[s])-1;
            map.put(array[s], newValue);
            if((Integer)map.get(array[s])==0){    //开始结点的知识点数<=1时,减去开始结点后知识个数会减少
                map.remove(array[s]);
                num--;
            }
            s++;    //开始结点自增
        }
        System.out.print(res);
    }

}

转载于:https://www.cnblogs.com/chiweiming/p/10457479.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值