首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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); }}
点赞 10
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-31 14:05
武汉大学 Java
九识智能oc
昨天给我发offer了,这个公司好像是做自动驾驶方向的,base苏州,我面的java后端,方向是自动驾驶数据平台和标注平台,说300r/天,还有20餐补,有了解这个公司的友友吗,工作强度如何,推荐去吗
发面经攒人品
点赞
评论
收藏
分享
10-29 22:17
虾皮信息_客户端开发工程师(准入职员工)
虾皮内推-虾皮内推码
虾皮前端面经,摘自优秀牛友拷打项目穿插八股父子之间传信(喝咖啡喝多了 脑子一片空白)所有不同hook的用法 Fiber (背的很熟)减少Dom的渲染方法 (背了一堆, 只记得useMemo, 真该死啊)手写,最长有效括号模拟url的并发请求, (在面试官的提醒下, 写完了)反问: 校招对应届生的要求面试官: 很好, 虽然一直卡壳, 但是一直在提醒我, 从薪资待遇上来说,Shopee在国内应该算得上Top级别,比肩BAT,技术算法应届生一般base在20-35k之间,可能会有部分的股票,总包大致在30-50w之间。对于产品/数据分析来说,base一般在18-27k之间。配上15天的年假,和五险一...
点赞
评论
收藏
分享
09-10 13:03
上海汇招信息技术有限公司_项目五部_java开发实习生(实习员工)
boss上的神仙hr
第一次在一个被人吐槽的软件上遇到这么好的hr,即使没有入职这家公司,隔着屏幕也真的很感动了
也许是天气_:
在这个hr不断骗你解约让你泡池子压薪资的时代,真的是一股清流了
找工作时遇到的神仙HR
点赞
评论
收藏
分享
10-27 12:15
后端工程师
腾讯内推腾讯面经
腾讯内推来啦~ 热乎乎的内推码:EUTPZZRV 腾讯致力于打造一个开放、包容、多元的企业文化,让每一位员工都能安居乐业。 分享一些面经: 第一轮技术面 闭包作用及实际应用场景 HTTP/1.1、HTTP/2、HTTP/3的核心差异 实现红绿灯控制效果(异步时序逻辑) React Hooks的设计动机与类组件对比 浏览器事件代理原理及实际应用 手写Promise核心逻辑(包含resolve/reject) 数组去重与高频字符统计算法 Web安全防护措施(XSS、CSRF) 浏览器渲染流程与重排/重绘优化 跨域解决方案(JSONP、CORS、代理) 第二轮技术面 低代码平台技术难点与扩展...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
数字马力笔试结果
8019
2
...
在崩溃中不断打碎自我重组
2756
3
...
秋招笔面记录
2461
4
...
27日常实习 字节后端一面凉经
2395
5
...
十一月,希望有个好的开始
2134
6
...
本硕985文科女秋招 0 offer深夜有感
2068
7
...
双非0offer
2027
8
...
真完蛋,我大抵是要毕业即失业了
1984
9
...
应届生校招进体制机会大盘点
1769
10
...
Offer选择
1599
创作者周榜
更多
正在热议
更多
#
秋招,不懂就问
#
323008次浏览
1958人参与
#
今年秋招还有金九银十吗
#
13441次浏览
96人参与
#
“vivo”个offer
#
43176次浏览
293人参与
#
秋招开始捡漏了吗
#
1259次浏览
8人参与
#
辞职后的日常
#
14890次浏览
82人参与
#
满帮集团求职进展汇总
#
7217次浏览
68人参与
#
一人一个landing小技巧
#
126452次浏览
1460人参与
#
我和mentor的爱恨情仇
#
78520次浏览
433人参与
#
打工人的精神状态
#
99290次浏览
1296人参与
#
你见过哪些工贼行为
#
30664次浏览
149人参与
#
校招生月薪1W算什么水平
#
45819次浏览
245人参与
#
学历or实习经历,哪个更重要
#
191785次浏览
1026人参与
#
海信求职进展汇总
#
84376次浏览
408人参与
#
被同事甩锅了怎么办
#
24682次浏览
100人参与
#
哪一瞬间觉得自己长大了
#
40080次浏览
494人参与
#
和mentor 1on1 都聊什么?
#
3050次浏览
21人参与
#
你想留在一线还是回老家?
#
63288次浏览
537人参与
#
工作后明白的那些道理
#
23443次浏览
225人参与
#
vivo工作体验
#
29766次浏览
125人参与
#
华为保温
#
111158次浏览
424人参与
#
如何准备秋招
#
65166次浏览
830人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务