#21232: python 解法


jonylu7@gmail.com (呸摟)

學校 : 臺北市立松山高級工農職業學校
編號 : 119847
來源 : [36.225.70.226]
最後登入時間 :
2024-12-05 12:32:06
e289. 美麗的彩帶 -- APCS | From: [123.193.248.227] | 發表日期 : 2020-05-04 20:42

使用 sliding windows 演算法

 

m,n=map(int,input().split())
k=list(map(int,input().split()))
start=0
anscount=0
w={}
clr=0
for z in range(m):
        if w.get(k[z],0)==0:
            clr+=1
        w[k[z]]=w.get(k[z],0)+1
if clr==m:
anscount+=1
        
for end,index in enumerate(k):
    if end>=m:
        w[k[start]]-=1
        if w.get(index,0)==0:
            clr+=1
        if w.get(k[start])==0:
            clr-=1
        w[index]=w.get(index,0)+1
        if clr==m:
            anscount+=1
        start+=1
        

 

print(anscount)
 
ZeroJudge Forum