美团机器学习笔试:和为k的倍数的最长子串O(n),不用map
就一个for循环,看到有人用hashmap,就说一下。顺便打个广告
对face++感兴趣的同学可以把简历发到我的邮箱:zhaoyang@megvii.com。邮件内附上本科,研究生(如果有)学校,和竞赛,论文奖励。
邮件内写上电话,邮箱,姓名,便于快速联系。
由于我司清北人数过多,建议985及以上投递,非985有好论文,ACM好经历,Noi经历,或者基础扎实也可。
初步筛选过了,我会回复你哟~
#include <iostream>
using namespace std;
const int maxn = 1e5 + 13;
long long A[maxn], B[maxn];
int n, k, ans;
int main()
{
cin >> n;
B[0] = ans = A[0] = 0;
for (int i = 1; i <= n; ++i) cin >> A[i], A[i] += A[i - 1];
cin >> k;
for (int i = 1; i < k; ++i) B[i] = maxn * 2;
for (int i = 1; i <= n; ++i) {
ans = max(ans, i - int(B[A[i] % k]));
B[A[i] % k] = min(B[A[i] % k], (long long)i);
}
cout << ans << endl;
return 0;
}