7.22 阿里 第二题 没参加笔试 自己瞎写的
原题:
长度为 n 的数组,数组中每个元素 a 满足:1<=a<=n
求连续区间的数量,要求区间中相同元素的数量 >=m
方法:双指针
#include<iostream>
using namespace std;
void main() {
int a[] = { 1,2,1,2,5 };
int n = 5, m = 2;
int l = 0;
int count = 0;
while (l < n) {
int r = l;
int cnt = 0;
while (r < n) {
if (a[r] == a[l]) ++cnt;
if (cnt == m) {
count += n - r;
break;
}
else {
++r;
}
}
++l;
}
cout << count << endl;
}