9.23网易算法笔试

真难啊,总共a了一道,第二题推出来公式了,但是不知道哪里有问题。3、4大眼瞪小眼不会。
第一题:查询长度为3且相同的字串数量
贴下第一题代码:

用一个dp先遍历整个串,记录以第i位结尾的前i个字符中所有满足条件的个数,每次给定区间,只需要用dp[r-1]-dp[l]即可求得相应区间内满足条件的个数。

第二题:给定数组长度以及元素之和,求某个位置的最大值,限制元素都是正整数且相差不超过1。
过了0%,但是我的思路感觉没啥毛病啊,有大佬的话欢迎指正。
要找位置p的满足条件的最大值,那位置p的值一定是数组中最大的数(或者最大数之一),也就是说位置p的数一定应该从每个位置均分m(m//n)开始遍历到m中的某一个满足某种条件的数,满足什么条件呢?满足位置p(不包含p)前面的数之和(等差数列)+后面的数之和(等差数列)都有个取值范围,前面的数之和取值范围是【left_min,left_max】=【(i-p+1)*(p-1)+(p-1)*(p-2)/2, (p-1)*i】,后面的数取值范围是【right_min,right_max】=【(i-n+p)*(n-p)+(n-p)*(n-p-1)/2,(n-p)*i】,则前面的数+后面的数取值范围是[left_min+right_min,left_max+right_max],设位置p的数为i,则m-i应该在这个区间内,i从m//n遍历到m,如果有m-i在这个区间内则更新结果,最后找到的满足条件的数就是我们需要的结果。

#牛客在线求职答疑中心##网易##我的实习求职记录##互联网没坑了,还能去哪里?##秋招##笔试#
全部评论
我四个题都做了,也是只有第一个题ac,后面三个题都是要么0%,要么不到10%,我都怀疑是不是标准答案有问题
4 回复 分享
发布于 2023-09-24 00:23 英国
真好,我直接没参加😃
1 回复 分享
发布于 2023-09-23 17:34 北京
你好,看到你的笔试题,感觉确实挺难的。不过,你的思路感觉没什么问题,可能是在实现上有些小问题。你可以尝试检查一下你的代码,看看是否有什么错误。如果你需要,我可以帮你看看代码,看看是否有什么可以改进的地方。 另外,关于第二题,你的思路是正确的,但是实现上可能需要注意一些细节。例如,你需要确保每个位置的数都是正整数,并且相差不超过1。这可能需要一些特殊的处理。 最后,关于笔试,不要灰心,一次失败不代表什么。你可以从这次笔试中吸取经验,为下一次笔试做好准备。加油!
点赞 回复 分享
发布于 2023-09-23 17:07 AI生成
int main() { int n, m, p; cin >> n >> m >> p; if(m == n) { cout << 1; return 0; } m -= (n + 1); int ans = 2; int l = max(1, p - 1); int r = min(n, p + 1); while(true) { int val = r - l + 1; if(m < val) break; m -= val; ++ ans; l = max(1, l - 1); r = min(n, r + 1); } cout << ans; }
点赞 回复 分享
发布于 2023-09-23 17:49 河南
我也是1/4...陪跑凉了,这题也太难了
点赞 回复 分享
发布于 2023-09-23 21:07 重庆
最后一题要用到矩阵乘法+快速幂求斐波那契数列,但是到最后没时间写了。
点赞 回复 分享
发布于 2023-09-23 22:32 瑞士
我开是也是差不多的思路推的公式直接求解,可能边界条件等每判断好吧没过,后来直接sqrt(m-n)+1 就 ac了,也就是说他的测试用例的m可能都是这种的,有点逆天
点赞 回复 分享
发布于 2023-09-24 01:06 北京
想继续投的,看这里28号截止。
点赞 回复 分享
发布于 2023-09-25 11:47 广东

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
2 5 评论
分享
牛客网
牛客企业服务