日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

poj3320Jessica's Reading Problem—尺取法(java)

發(fā)布時(shí)間:2025/3/20 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj3320Jessica's Reading Problem—尺取法(java) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接

大意:給序列數(shù)字,找出最小子序列,包含所有的元素類型。例如
5
1 8 8 8 1
輸出2,因?yàn)? 8就包含了所有元素

思路:尺取法

  • 這個(gè)和裸的尺取優(yōu)點(diǎn)不同的是,他需要一個(gè)map來(lái)維護(hù)判斷而不是sum維護(hù)判斷。在右側(cè)從左向右遍歷的同時(shí),用一個(gè)map<Integer,Integer>來(lái)維護(hù)元素,map.keyset()就可以判斷是否包含所有元素,數(shù)值用來(lái)判斷改元素出現(xiàn)次數(shù)是否應(yīng)移除改元素—左側(cè)標(biāo)記右移的時(shí)候判斷。
  • 所以具體的解題方法是:left,right=0,right向右遍歷,向map中添加元素(數(shù)量等信息),如果包含了所有元素,那么left右移,對(duì)應(yīng)改變map,一直到map不包含所有為止。然后右側(cè)繼續(xù)—

附上代碼:

package 暴力;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StreamTokenizer; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set;public class poj3320 {public static void main(String[] args) throws IOException {// TODO 自動(dòng)生成的方法存根StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out));in.nextToken();int p=(int)in.nval;int value[]=new int[p];Map<Integer, Integer>map=new HashMap<Integer,Integer>();Set<Integer>set=new HashSet<Integer>();for(int i=0;i<p;i++){in.nextToken();value[i]=(int)in.nval;set.add(value[i]);}int l=0;int len=p-1;map.put(value[0], 1);for(int i=1;i<p;i++){if(map.containsKey(value[i])) {map.put(value[i], map.get(value[i])+1);}else map.put(value[i],1);while(map.keySet().size()==set.size()) {if(i-l<=len) {len=i-l;}if(map.get(value[l])>1) {map.put(value[l], map.get(value[l])-1);}else map.remove(value[l]);if(l<i)l++;}}out.println(len+1);out.flush();}}
  • 如果對(duì)后端、爬蟲、數(shù)據(jù)結(jié)構(gòu)算法等感性趣歡迎關(guān)注我的個(gè)人公眾號(hào)交流:bigsai

總結(jié)

以上是生活随笔為你收集整理的poj3320Jessica's Reading Problem—尺取法(java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。