3.9 蚂蚁笔试

7 道多选 4 道单选:设计模式,计算机网络,操作系统,数据结构,kmp,排序算法等

java 2 道单选,2 道多远:基础知识,代码结果,==,equals ,hashcode 

三道编程题
第一题签到题,模拟判断输出
第二题树上曼哈顿距离,建树然后算,只过了 25
第三题,求数组的各个序对相除求和,暴力 20,二分好像可以

又菜了

#蚂蚁# #蚂蚁求职进展汇总# #软件开发笔面经#
#实习# #大厂#

全部评论
一摸一样
1 回复 分享
发布于 03-09 20:47 湖北
笔试做的怀疑人生
1 回复 分享
发布于 03-09 20:49 上海
一周做了6场笔试,累死了
1 回复 分享
发布于 03-09 20:51 江苏
就1.2
1 回复 分享
发布于 03-09 20:54 北京
第三题:每个数不同倍数的二分查找
1 回复 分享
发布于 03-09 21:37 吉林
拼尽全力无法战胜第一题,不会处理空格
点赞 回复 分享
发布于 03-09 21:00 江苏
1.25,不知道能不能过
点赞 回复 分享
发布于 03-09 21:01 江苏
一模一样
点赞 回复 分享
发布于 03-09 21:16 北京
3题前缀和优化查找就行了,2dfs,比较复杂
点赞 回复 分享
发布于 03-09 21:19 美国
大佬,你的简历过了吗,为什么我简历还没过就收到通知笔试通知了?还是说蚂蚁就是要先笔试过了之后再晒简历?
点赞 回复 分享
发布于 03-10 10:10 江苏
还没面试过,请问是浏览器作答像leetcode一样,然后双机位吗?
点赞 回复 分享
发布于 03-10 11:26 四川

相关推荐

头像
03-09 21:01
已编辑
华中科技大学 Java
1,模拟一下就好,别忘了处理换行和回车,代码略。2,bfs一下,找出每个点的坐标,o1输出就可以了。void bfs(int u) {    queue q;    q.push(u);    pos[u] = {0, 0};    mark[u] = 1;    while (q.size() > 0) {        int v = q.front();        q.pop();        int l = - 1, r = -1;        for (auto x : g[v]) {            if (mark[x]) continue;            mark[x] = 1;            q.push(x);            if (l == -1) l = x;            else {                r = x;                if (l > r) swap(l, r);             }        }        if (l != -1) {            pos[l] = pair(pos[v].x - 1, pos[v].y - 1);        }        if (r != -1) {            pos[r] = pair(pos[v].x + 1, pos[v].y - 1);        }    } }3,可以发现,我们要计算的是每个数整除其他数之后的和。其实可以反过来想,我们要计算每个数作为除数,其他数除他之后的和。对于数i来说,[j * i, j * i + i - 1]这个范围内的数除以i等于j,那我们可以枚举每个i和每个j,维护一个前缀和来快速算出[j * i, j * i + i - 1]这个范围内的贡献,贡献数是i的数量 * 范围内数的个数 * j。时间复杂度是n + n/2 + n /3 +... = nlogn代码如下,cnt[i]是数字i的数量,sum[i]是前cnt[i]的前缀和,N是数的最大范围1e5;    for (int i = 1; i < N; i ++) {        if (cnt[i] == 0) continue;        for (int j = 1; j * i < N; j ++) {            res += 1ll * (sum[min(i * j + i - 1, N - 1)] - sum[i * j - 1]) * cnt[i] * j;        }    }#笔试# #蚂蚁# #蚂蚁笔试#
投递蚂蚁集团等公司10个岗位
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客企业服务