前两天做了美团的C++笔试题,自己也AC了,看了下网上的代码,感觉都是额外建个数组,空间复杂度比较高,于是把自己的空间复杂度是O(1)的代码贴上来,时间复杂度跟AC的都差不多。不多说,上程序。
AC代码
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n,k;
while (cin >> n) {
int *a = new int[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> k;
int count = 0;
for (int i = 0; i < n; i++) {
int tmp = 0;
for (int j = i; j < n; j++) {
tmp += a[j];
if (tmp%k == 0)
count = count > (j - i + 1) ? count : (j - i + 1);
}
if (count >= n - i)
break;
}
cout << count << endl;
return 0;
}
}