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])
posted @ 2021-03-13 20:41  童年の波鞋  阅读(315)  评论(0编辑  收藏  举报