首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
11-11 16:29
门头沟学院 前端工程师
顺丰科技前端秋招面经
#发面经攒人品#一面自我介绍实习项目相关问题html中meta标签有哪些属性css和js实现动画有什么区别?esm和cjs的区别,哪一种可以在条件语句中引入esm的静态解析有什么用(便于treeshaking,没答上来)js用'=='来判断一个对象和数字是否相等会怎么判断?有什么方法让它们相等?还有没有其他方法?(答了重写valueOf,面试官说可以用代理)js的代理在哪个地方有应用二面自我介绍Vue2组件重写为Vue3有什么技术难点团队开发的时候如何管理业务组件的版本描述一下封装的定时器hook事件循环输出手撕:扁平化数组并去重口述js深拷贝如何实现 console.log(1); setT...
查看17道真题和解析
点赞
评论
收藏
分享
10-03 17:08
已编辑
西安电子科技大学 Java
你们的秋招都怎么样了
真的绷不住了,双非b真的是案底啊
脑袋锈住了:
211本 id硕, 至今0offer
秋招的破防瞬间
点赞
评论
收藏
分享
10-29 15:51
嘉应学院 Java
投Java后端实习,一直没有面试,简历有什么问题吗
是因为学历不好,只是二本吗?
后端转测开第一人:
你把简历的学历改成北京交通大学 去海投1000份发现基本还是没面试
点赞
评论
收藏
分享
11-13 14:42
已编辑
携程_旅游事业部_前端实习生(实习员工)
虽然挂了,发面经攒人脉,好未来-前端
好未来面经-数字效能一面:1h26min1、自我介绍2、谈谈你对闭包的理解3、事件循环的理解、输出题(考点:一个promise里面有settimeout)4、讲讲这些数组的操作,map,filter,reduce...及答案5、哪些数组操作不修改原数组6、讲讲原型的理解(原型的输出题,太长了,写错几个)7、讲讲一下URL输入到浏览器的渲染发生了什么8、什么是重排、重绘9、如果一个界面频繁操作重排、重绘,怎么优化10、讲一下react的hooks10、useMemo和useCallback区别,问的比较细11、讲讲写h5遇到一个比较影响深刻的难点12、你对块级元素,行内级元素的理解13、Reac...
查看17道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
拒了9个offer最终留米,我秋招到底获得了什么?
6950
2
...
在大厂实习被辞了......
4551
3
...
27有赞实习二面
2865
4
...
秋招最没用的建议就是劝退别人转这转那的
2449
5
...
多面试几场你就会发现,敢比会重要一万倍
2207
6
...
mentor一句话,胜读十年书
1932
7
...
一定要看总包!但更要拆开看总包的每一个部分!
1794
8
...
27百度日常实习一面
1683
9
...
27实习-有赞-50min一面
1562
10
...
27届非科班转码没机会了吗
1562
创作者周榜
更多
正在热议
更多
#
第一次找实习,我建议__
#
22797次浏览
297人参与
#
参加完秋招的机械人,还参加春招吗?
#
79331次浏览
614人参与
#
从mentor身上学到了__
#
20106次浏览
314人参与
#
机械人的工作环境真的很差吗
#
34731次浏览
132人参与
#
什么样的公司千万别去
#
17369次浏览
116人参与
#
韶音科技求职进展汇总
#
60899次浏览
505人参与
#
牛友的志愿填报指南
#
40677次浏览
196人参与
#
外出实习被同学举报
#
4557次浏览
32人参与
#
你怎么评价今年的春招?
#
142755次浏览
1389人参与
#
秋招暂停,我将对以下公司做出处罚__
#
30219次浏览
137人参与
#
如果今天是你的last day,你会怎么度过?
#
48521次浏览
299人参与
#
你认为工作的意义是什么
#
204097次浏览
1290人参与
#
秋招我要惩罚这些公司
#
3366次浏览
22人参与
#
虾皮开奖
#
41001次浏览
197人参与
#
除了主业以外,你还有哪些其他收入?
#
35590次浏览
302人参与
#
面试被问期望薪资时该如何回答
#
312300次浏览
1790人参与
#
你听到的“最没用”的秋招建议
#
21475次浏览
234人参与
#
实习生的蛐蛐区
#
836108次浏览
4111人参与
#
军工所铁饭碗 vs 互联网高薪资,你会选谁
#
4067次浏览
18人参与
#
打工人的至爽时刻or至暗时刻
#
42283次浏览
221人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务