美团笔试第二题怎么做的?
数组中有0,代表最大值最小值的那题
为什么看起来那么简单的题,O(n)的时间复杂度,居然会超时?
拿了250分, 我就是个250
为什么看起来那么简单的题,O(n)的时间复杂度,居然会超时?
拿了250分, 我就是个250
全部评论

我用golang怎么写都超时,后面换成Python就过了
java我也没过,超时了,怀疑题有问题,针对java选手
全部用long
直接统计未知数字,o(1)完成
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int q = in.nextInt();
long res = 0, countOfZero = 0;
for (int i = 0; i < n; i++) {
int num = in.nextInt();
res += num;
if (num == 0) countOfZero++;
}
long[] minRes = new long[q];
long[] maxRes = new long[q];
for (int i = 0; i < q; i++) {
minRes[i] = res + countOfZero * in.nextInt();;
maxRes[i] = res + countOfZero * in.nextInt();
}
for (int i = 0; i < q; i++) {
System.out.printf("%d %d\n", minRes[i], maxRes[i]);
}
有没有大哥帮忙看看是为什么a不了
同
O(n)路过,没有超时

先求个和记为s。然后count一下零的个数记为c,区间范围[l,r],答案就是s+c*l, s+c*r。数据大小没注意,因为用的是py
我也一样超时了 不知道为什么 后面改成c++过了
全用long,多执行几次就过了😂😂
long+sout一次,sout蛮浪费时间
我也是个250
被自己蠢哭
怎么查看分数呀
我用Python O(n)过了

本来我一看 10的5次,还搞了个排序,排序去掉,然后提高了点,加个 long,然后减少 O(n) 的次数就过了,还得剪枝,蚌埠,这玩意还看运气的,可能多试几次,本来90+,然后就过了
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享