首页 > 编程知识 正文

微软面试题3-18 Leetcode 992 (难度比较大的转换滑动窗口)

时间:2023-05-04 12:51:21 阅读:68176 作者:3452

即使麦克风有问题也不沟通就打下去

双面手写快一秒了,但一个hard主题没能变成o(n )

992 .改编自k个不同整数的子序列

变换滑动窗口,改变问题的位置,求出区间内最多只包含k个部分数组的个数,通过单调性在滑动窗口中解决。

对于给定的j,满足要求的部分数组的个数,从最初满足要求的I到j,共有j-i个,因此代码如下。

class解决方案{ public : intsubarrayswithkdistinct (vector inta,int K ) returnsubarrayswithmostkdistinct (a,k )-subarraystkdinct (/最多k个好子序列个数(/最多k-1个好子序列个数intsubarrayswithmostkdistinct ) vectorinta,int K ) { unordered_mapint,int hashmap; int count=0,res=0; for(intI=0,j=0; j A.size (; j () if ) hashmap[a[j] )==0) { count; } hashmap[A[j]]; wile(countk ) ) Hashmap[a[I] )---; if(Hashmap(a(I ) )==0) { count--; (I; (RES=(j-I ); }返回RES; };

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。