b_mt_滑动窗口的众数(map计数)

求出数组a中的n-k+1个大小为k的窗口中的众数,多个众数输出最小那个

思路:千万别用堆,太麻烦了。

n,k=map(int,input().split())
A=list(map(int,input().split()))
l,r=0,0
cnt={}
A=sorted(A)
print(A)
while r<n:
    rVal=A[r]
    cnt[rVal]=cnt.get(rVal,0)+1
    r+=1
    if r-l==k:
        t=sorted(cnt.items(), key=lambda k:(k[1],-k[0]))
        lVal=A[l]
        cnt[lVal]-=1
        l+=1
        print(t[-1][0])