阿里云0309笔试、拼多多0309笔试、蚂蚁0309笔试
阿里云
选择若干(单选,多选,分值:3 分* 15)+编程*3(分值:15,15,25),选择不是太好做。
- 为什么要默认大家都知道你说的“排列”就是从1开始呢?如果把题目说明白一点,是怕大家都用一维dp做出来吗?
- 不会, 暴力骗了25%;
- 不会,暴力加贪心骗了75%;
拼多多
编程*4(分值:25,25,25,25)。
- 模拟,注意负数最大输出时取绝对值;
- 二维dp只过了66%,考虑60%的数据小于10^3, 对这部分数据暴力,其余部分沿用二维dp,最终过了80%;
- 二维dp,dp[i][j]表示前i页书用j小时去读,最大的知识量;注意很多状态都是无用的,给定当前页数为k时,遍历时间j的时候定义时间的上界为min(t, k),下界为 (k + 1)/ 2;
- 排序放置每个人的座位,贪心,按照入场顺序二分查找当前身高可以坐的最右边界,过了44%。应该是贪心的方式出问题了。
蚂蚁
选择若干(单选,多选,分值:3分 * 15)+编程*3(分值:15,15,25),选择有一些考察库函数含义的,如Arrays.hashCode(),Arrays.equals()..
- 签到题,按照题意模拟每个字符情况即可,唯一可能需要注意的就是字符转ASCII知道如何计算
int ascii = ch - '0' + 48;
2. 建树,采用邻接表(为了确认左右儿子,每个节点的子节点采用最小堆记录)。从根节点开始BFS构建坐标,用HashMap存储节点坐标,key为节点编号,value为坐标,用临时布尔变量标记是否创立了左儿子,同时用visited数组标记防止重复访问。最后对每个查询调用HashMap可以O(1)计算。
PriorityQueue<Integer>[] list = new PriorityQueue[n];
3. 题意比较明确。暴力可以过20%case,考虑O(n * logn)的做法,排序数组,遍历nums[i]的倍数与所在区间,不断累加。做的时候没调试明白..
#拼多多求职进展汇总##阿里求职进展汇总#