首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 23:16
杭州电子科技大学 Java
字节三面秒挂 我做对了什么
互联网中字节跳动是有三轮技术面的,而且每一轮面试都有手撕代码,其他大厂或多或少有些轮次没有手撕一二面都是较为基础的项目简问和八股三面是大leader,对我的实习项目进行了深挖自我介绍完之后,让我介绍一下实习(我说了刚一分钟被严重大声打断,态度极差,被告知只需要介绍业务,他不想听是怎么实现的)从这之后我变得有些紧张、慌乱了,暗示自己调整状态,实习业务介绍完之后开始深挖各种相关场景,与业务关联的上下游实现,并要求介绍上下游业务,最后让我介绍具体如何实现(那之前为什么不一起都问)后续会深问几个八股的底层原理,问了sql注入的介绍,如何解决,具体情况(真是第一次被问到sql注入,完全瞎说)手撕代码是一...
自言自语着:
我字节三面也是,上来问个你知道你的电脑内存多大吗,直接给我整懵了
查看6道真题和解析
毕业季,给职场新人一些建议
牛客创作赏金赛
点赞
评论
收藏
分享
05-19 23:03
已编辑
门头沟学院 Java
Java后端开发需要理解和背的八股文整理
答案在主页简介里欢迎订阅专栏
好戏慢煮:
mark高频
Java后端开发总结
点赞
评论
收藏
分享
03-28 18:23
延边大学 Java
连面两家,给自己菜笑了。
26届0实习破学校烂大街项目,刚投两家就拿到两家面试,还以为行情大好。pdd快排几分钟写完。txt写代码改bug改十分钟。美团top k忘了堆怎么建,只能用api优先队列硬写。两家都问了好多计网 数据结构 我准备一堆mysql redis成小丑了😭😭 现在考研来得及吗?😇😇
一世随心:
来得及,九月份极限考研上岸的都有
面试中的破防瞬间
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
03-28 13:48
演都不演了
不是哥们,想白嫖就直说啊😅
hory权:
校招vip纯神人了,还说自己是什么师范大学的
职场破防瞬间
点赞
评论
收藏
分享
05-20 11:36
苏州大学 设计
我对面的同事,入职一个月没说话
坐在我对面的00后同事,985的应届生,面试的时候夸夸而谈,入职后一言不发。 每天按时上下班,除了“早”和“再见”,我没听她说过别的话。 不得不承认,年轻人活出了我们不敢的样子
在看面经的花生米很野蛮:
实习生应届生不说话大概率不是高冷不想说话,是胆小害羞根本不知道跟谁说话
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
后端实习什么算有产出
5.8W
2
...
悟已往之不谏,知来者之可追
1.8W
3
...
以Mentor视角,更喜欢有这些沟通技巧的实习生
1.4W
4
...
来算一算你的offer究竟到手工资多少!(详细教程)
1.0W
5
...
就是说有些招聘要求别太离谱噢
8721
6
...
腾讯云智一面面经
8499
7
...
双非本秋招字节转正失败春招重新拿下字节和腾讯
8303
8
...
找实习、找工作中如何管理好自己的情绪?
8209
9
...
实习生都给我放开了大胆问
6946
10
...
百度裁暑期实习,原因,岗位业务缩减
6887
创作者周榜
更多
正在热议
更多
#
我的求职总结
#
26127次浏览
460人参与
#
你的房租占工资的比例是多少?
#
22124次浏览
248人参与
#
毕业季,给职场新人一些建议
#
22360次浏览
397人参与
#
计算机专业还有必要去大厂卷吗
#
20192次浏览
103人参与
#
我的实习日记
#
2437910次浏览
25406人参与
#
辞职之后最想做的一件事
#
10764次浏览
161人参与
#
选offer应该考虑哪些因素
#
18709次浏览
284人参与
#
晒一晒你收到的礼盒
#
62277次浏览
373人参与
#
为了秋招你都做了哪些准备?
#
10873次浏览
165人参与
#
薪资一样,你会选择去大厂还是小公司
#
16401次浏览
100人参与
#
你怀疑过自己的专业选择吗?
#
17461次浏览
201人参与
#
第一份工作应该只看薪资吗
#
138743次浏览
1458人参与
#
你想吐槽公司的哪些规定
#
17376次浏览
67人参与
#
你想留在一线还是回老家?
#
38019次浏览
447人参与
#
我的工作日记
#
97535次浏览
1267人参与
#
Offer比较,求稳定还是求发展
#
49263次浏览
237人参与
#
你小时候最想从事什么职业
#
91456次浏览
1703人参与
#
秋招想进国企该如何准备
#
58036次浏览
375人参与
#
工作中的卑微时刻
#
9009次浏览
55人参与
#
你见过最离谱的招聘要求是什么?
#
188294次浏览
1401人参与
牛客网
牛客企业服务