给你一个长度为 n 的序列,元素标号 1-n。问能够找到多少对不同的(L,R)(1<=L<=R),使得在子序列 [L,R] 内存在出现频率不低于K的元素?输入序列大小 n(1<=n<=10^4)、出现频率 k(1<= k<= n)和一个包含 n 个整数的数组,第 i 个整数表示序列的第 i 个元素为 ai(1<=ai<=10^9)。输出满足条件的子序列个数。
1.初始 L =R= 0;sum=0;用来计算满足条件的区间个数 2.判断区间[L, R]的情况,满足情况 1,则 sum++; R++。满足情况 2,L++。满足情况 3,结束计算。 3.R 每次加 1,都要给numb数组中对应的数出现次数+1。当是一个新数时,要使 numbR++; 4.L 每次减 1,都要给numb数组中对应的数出现次数-1。当减为 0 时,要使 numbL++ 对于情况1,因为L不变时,后面的所有R都满足条件,所以可以修改为sum+=n-R+1,L++。 因此输入:4 2 [1,2,1 ,2] 输出:3 注:三个子序列分别为 [1,3],[1,4],[2,4]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。