首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
冲冲冲冲冲冲呀
上海交通大学 Java
发布于北京
关注
已关注
取消关注
蚂蚁笔试感觉还好呜呜呜
@一片特立独行的面包:
2025.3.9 蚂蚁笔试(个人整理,仅供参考)
第一题答案import java.util.Scanner;public class mayiT1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); scanner.nextLine(); String s = scanner.nextLine(); String t = scanner.nextLine(); scanner.close(); for (int i = 0; i < s.length(); i++) { if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') { System.out.print(Character.toUpperCase(s.charAt(i))); } else if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') { System.out.print(Character.toLowerCase(s.charAt(i))); } else if (s.charAt(i) >= '0' && s.charAt(i) <= '9') { System.out.print((int) t.charAt(i)); } else { System.out.print('_'); } } }}第二题思路二叉树即为特殊的图,用邻接表存储,把编号为1的结点当作根(0,0),dfs求每个点的坐标,即可得出答案。答案import java.util.*;public class mayiT2 { static List<Integer>[] tree; static Map<Integer, Coordinate> map; static boolean[] visited; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int q = scanner.nextInt(); tree = new ArrayList[n + 1]; for (int i = 1; i <= n; i++) { tree[i] = new ArrayList<>(); } for (int i = 1; i <= n - 1; i++) { int u = scanner.nextInt(); int v = scanner.nextInt(); tree[u].add(v); tree[v].add(u); } int root = 1; map = new HashMap<>(); visited = new boolean[n + 1]; visited[1] = true; map.put(root, new Coordinate(0, 0)); dfs(root); for (int i = 0; i < q; i++) { int c1 = scanner.nextInt(); int c2 = scanner.nextInt(); System.out.println(Math.abs(map.get(c1).getX() - map.get(c2).getX()) + Math.abs(map.get(c1).getY() - map.get(c2).getY())); } scanner.close(); } private static void dfs(int root) { boolean left = true; // 是否是左孩子 tree[root].sort(Integer::compareTo); for (int child : tree[root]) { if (!visited[child]) { visited[child] = true; if (left) { left = false; map.put(child, new Coordinate(map.get(root).getX() - 1, map.get(root).getY() - 1)); dfs(child); } else { map.put(child, new Coordinate(map.get(root).getX() + 1, map.get(root).getY() - 1)); dfs(child); } } } } static class Coordinate { int x; int y; public Coordinate(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } }}第三题题目描述给定n个元素ai,要求计算以下表达式的值:输入描述第一行包含一个整数n,表示元素的个数,满足1 ≤ n ≤ 10^5^第二行包含n个整数a1,a2,...,an,其中1 ≤ ai ≤ 10^5^输出描述输出一个整数,表示计算得到的值s示例1输入31 2 3输出9说明对于输入的样例,计算过程如下具体计算:当i=1时:1+0+0=1当i=2时:2+1+0=3当i=3时:3+1+1=5将所有结果相加,得到S=1+3+5=9思路采用 计数优化 方式计数数组 count:统计输入数组中每个数的出现次数,加快后续计算。前缀和数组 prefixSum:计算前缀和,用于快速统计某个区间的数的个数。优化计算 floor(ai/aj):直接遍历 ai 并累加 floor(ai / aj) 的贡献,避免双重循环暴力计算,提高效率。时间复杂度预处理 count 和 prefixSum:O(n)计算 S:O(n log n) 级别,优于 O(n²)答案import java.util.Scanner;public class mayiT3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] nums = new int[n]; int maxVal = 0; for (int i = 0; i < n; i++) { nums[i] = scanner.nextInt(); maxVal = Math.max(maxVal, nums[i]); } scanner.close(); // 统计每个数出现的次数 int[] count = new int[maxVal + 1]; for (int num : nums) { count[num]++; } // 计算前缀和,用于快速查询小于等于某个数的总个数 int[] prefixSum = new int[maxVal + 1]; for (int i = 1; i <= maxVal; i++) { prefixSum[i] = prefixSum[i - 1] + count[i]; } long ans = 0; // 遍历每个可能的 a[i] for (int num = 1; num <= maxVal; num++) { if (count[num] == 0) { // 跳过未出现的数 continue; } // 计算当前 a[i] 对所有 a[j] 的贡献 for (int k = 1; k * num <= maxVal; k++) { int lower = k * num; int upper = Math.min(maxVal, (k + 1) * num - 1); int numCount = prefixSum[upper] - prefixSum[lower - 1]; ans += (long) count[num] * k * numCount; } } System.out.println(ans); }}
点赞 9
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
09-16 10:48
门头沟学院 Java
9月没拿到offer会完蛋吗
现在不是刚刚9月中旬吗,,是不是拿到offer的才是少数啊,感觉大家都在焦虑发0offer完蛋了,那我不是更完蛋了,好崩溃啊。现在几乎进到二面的都没有,好烦啊啊啊啊啊啊
面试拷打成m:
666,那我压根没面我直接跳了
我的秋招日记
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
09-15 10:22
有了秋招offer可以休息了吗
本人投递60+企业左右,只拿了一个offer,实在是懒得继续投了 这个offer在我预想之内,是虽然不是特别满意,但是也可以接受 就是担心现在时间好早,hc能不能稳定的给我留一整年呢,企业方应该不会毁offer吧
F0125:
如果可以接受的话 不如好好享受最后的大学生活
无论你签了哪家都会有些鸽offer的风险
我的秋招日记
点赞
评论
收藏
分享
09-11 09:30
已编辑
中山大学 Java
27届实习求助
请教一下各位,想在明年2月份找中大厂暑期实习的话,简历上的这些内容够用吗?目前实习经历只有简历上一段银行的业务
十二点前睡:
学历加粗即可
你的简历改到第几版了
点赞
评论
收藏
分享
09-04 00:09
珠海艺术职业学院 贸易跟单
请给我offer
AC鸽想进大厂:
你是我见过最美的牛客女孩
点赞
评论
收藏
分享
09-16 20:10
杭州电子科技大学 测试工程师
京东jds测开一面
京东面试官人挺好的,这里点个赞完全不压力,虽然我不是很match(还得补补sql啥的),不过不像某些企业只会压力面,京东纯聊天,挺好的,(虽然都是不过但是不要一直压力面吧某些企业)一边聊天一边考察,我个人觉得虽然大概率挂了但是第一次面要手撕的收获挺多的。1.自我介绍2.测试系统用例怎么测试(我答了对四个部分进行测试)3.如果给你一个测试场景,比如说注册系统你怎么具体测试4.linux相关命令,怎么从指定目录里抓包关键字5.手撕1.合并两个有序列表,我本来想把他弄成链表然后递归合并两个链表的(成hot100原题了),想了想好像遍历也行,不整太麻烦的了2.求目标和的最小长度子数组,这个没啥多说的,...
查看6道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
🎉创作红榜第2期丨7篇内容解决你的“求职/职场/成长困惑”!
3236
2
...
携程 后端 线下面
2295
3
...
这,就是你想看的爽文嘛?
2247
4
...
字节坠机复活,公式化面试遇上公式化八股小子
1635
5
...
招银网络科技一面
1463
6
...
还得是追觅啊,号称要招1000名清华毕业生
1269
7
...
百度好大,像个迷宫
1178
8
...
提前申请离职刷到前mt的朋友圈发现自己被骂了
1130
9
...
滴滴池子这么大嘛
1047
10
...
携程笔试
955
创作者周榜
更多
正在热议
更多
#
宣讲会你有哪些意向不到的收获
#
9758次浏览
50人参与
#
度小满求职进展汇总
#
2946次浏览
27人参与
#
你面试被问到过哪些不会的问题?
#
51114次浏览
1224人参与
#
毕业论文怎么查AI率
#
57727次浏览
1923人参与
#
你的公司给实习生发中秋礼物吗
#
7013次浏览
39人参与
#
水滴求职进展汇总
#
7988次浏览
46人参与
#
辞职之后最想做的一件事
#
23650次浏览
232人参与
#
不考虑薪资和职业,你最想做什么工作呢?
#
105085次浏览
727人参与
#
从顶到拉给所有面过的公司评分
#
53869次浏览
329人参与
#
豪迈求职进展汇总
#
18886次浏览
142人参与
#
小厂实习有必要去吗
#
58677次浏览
297人参与
#
你的国庆怎么过
#
29269次浏览
257人参与
#
晒一晒你收到的礼盒
#
79396次浏览
413人参与
#
晒晒你的中秋福利
#
21126次浏览
141人参与
#
十一假期一定要干的事
#
19964次浏览
147人参与
#
为了求职,我做过的疯狂伪装
#
24592次浏览
497人参与
#
机械制造岗投递时间线
#
29565次浏览
372人参与
#
工作压力大怎么缓解
#
109494次浏览
1074人参与
#
bilibili求职进展汇总
#
107123次浏览
889人参与
#
秋招的嫡长offer
#
69197次浏览
553人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务