实习
爱学习的程序员
我很菜的
展开
-
2020实习笔试题——最有价值数的个数
问题描述对一个数组,求每个数左边比他大的数的最小值,右边比他小的数的最大值,若这两个数成倍数关系,则它为最有价值的数问题分析没什么好说的,两次循环记录每个数左边比他大的数的最小值,以及右边比他小的数的最大值。最后,判断是否有最有价值数。代码示例import bisectnum = list(map(int, input().split()))n = len(num)left_max = [float('-inf')] * nright_min = [float('inf')] * n原创 2021-03-16 11:29:24 · 228 阅读 · 0 评论 -
2020年实习笔试题——最大的最短路径和
问题描述现有n个人,m座城市,它们的目的地都是x。此外,两座城市的距离不对称。求最短路径的最大值。问题分析两遍Dijstra算法。代码示例def dijstra(n, x, dist, matrix): for j in range(1, n + 1): dist[j] = matrix[x][j] visited = [False] * (n + 1) visited[x] = True while True: t = -原创 2021-03-16 11:27:28 · 299 阅读 · 1 评论 -
阿里2020.3.30笔试题——养鸡场
问题描述给定鸡场数量nnn,养鸡天数mmm,每次增加数量kkk每一天开始时,每个养鸡场都增加k只鸡;每一天结束时,将数量最多的鸡场数量减半(向下取整)问题分析因为每次选择数量最多的鸡场,所以使用大顶堆即可。代码示例import heapq as hpdef solve(): N, M, K = map(int, input().split()) chicken_list = list(map(int, input().split())) chicken_list =原创 2021-03-15 16:51:24 · 337 阅读 · 1 评论 -
阿里2020.4.3实习笔试题——格子体力
问题描述一个n*m的矩阵格子,每个格子的值是体力,每经过一个格子需花费相应的体力,求从上方越过矩阵到达下方的最小体力花费。问题分析堆优化的动态规划。代码示例class Node: def __init__(self, x, y, dist): super().__init__() self.x = x self.y = y self.dist = distclass MinHeap: def __init__(se原创 2021-03-15 16:28:26 · 423 阅读 · 0 评论 -
阿里2020.3.23笔试题——走迷宫
问题描述小强在玩一个走迷宫的游戏,他操控的人物现在位于迷宫的起点,他的目标是尽快的达到终点。每一次他可以选择花费一个时间单位向上或者向下或者向左或者向右走一格,或是使用自己的对称飞行器花费一个时间单位瞬移到关于当前自己点中心对称的格子,且每一次移动的目的地不能存在障碍物。具体来数说,设当前迷宫有nnn行mmm列,如果当前小强操控的人物位于点A(x,y)A(x, y)A(x,y),那么关于点AAA中心对称的格子B(x′,y′)B(x', y')B(x′,y′)满足x+x′=n+1x + x' = n + 1原创 2021-03-15 16:23:02 · 915 阅读 · 2 评论 -
阿里2020.3.23实习笔试——队伍选择
问题描述现有nnn个人,从中选择任意数量的人组成一支队伍,再从这些人中选出1名队长,求不同方案数对∣109+7∣|10^9 + 7|∣109+7∣ 的结果。如果两个方案选取的人的集合不同或选出的队长不同,则认为这两个方案是不同的。求输入任意人数nnn得到的队伍数。问题分析典型的排列组合问题。因为从nnn个人中选择任意数量的人组成队伍,则依次有Cn1,Cn1,…,CnnC_n^1, C_n^1, \dots, C_n^nCn1,Cn1,…,Cnn中选择方式。然后,在这些队伍中选择一个人作为队长,即原创 2021-03-15 16:17:23 · 203 阅读 · 0 评论 -
阿里2020.4.1实习笔试题——翻转01字符串
问题描述给一串二进制字符串如00011001,希望把他改为全为0,如果更改某个字符,那么他两边的字符也要更改,例如把第二位的0换成1,那么就变成了11111001. 求最少翻转次数。如果无法全0,输出NO。问题解析因为每翻转当前字符,其相邻字符也会翻转,所以每当遇见为1的字符时,将它下一个的字符进行翻转。因为这样做可以保证之前的字符全部为0,即本次翻转不会影响之前的结果。如此循环迭代之后,判断最后一个是否为0即可。代码解析def flip(s, i): def __flip(s, i):原创 2021-03-15 16:07:12 · 2490 阅读 · 0 评论 -
阿里2020.4.1实习笔试题——攻击怪兽
问题描述有NNN个怪兽,MMM个弓箭,每个怪兽有生命值,每个弓箭有杀伤力和价值,每个怪兽只能用一支弓箭攻击,弓箭杀伤>=怪兽生命时可消灭怪兽,求使用弓箭的最小价值。如无法消灭,返回-1。问题解析因为目标是消灭怪兽,而且每个怪兽只能被一只弓箭攻击,所以我们应该在优先考虑消灭的基础上,选择最小价值的弓箭。根据这个推理,我们可以将怪兽的生命值非升序排序,并同时将弓箭按照攻击力进行非升序排序。最后,循环遍历能消灭当前怪兽的弓箭,并使用优先队列进行维护,选择价值最小的那一只即可解决该问题。代码解析N,原创 2021-03-15 15:57:27 · 273 阅读 · 0 评论 -
阿里2020.4.8笔试——木头人攻击
问题描述某人有nnn次机会攻击mmm个怪兽。攻击时,可以一次攻击bbb只怪兽。每个怪兽有aaa滴血,每次攻击能让bbb只怪兽都减一。问题解析很简单。当b>mb > mb>m时,只需判断nnn与aaa的大小关系。nnn大则必定能将mmm只怪兽消灭,反之则一只也无法消灭。当b≤mb \le mb≤m时,因为每次只能选择攻击其中的一部分怪兽,所以需要计算理论上的最大攻击数attacknum=n∗b/aattack_num = n * b / aattacknum=n∗b/a,如果atta原创 2021-03-15 15:46:26 · 189 阅读 · 0 评论 -
阿里2020.4.13实习笔试题——蚂蚁森林之王
问题描述森林里有nnn只动物,编号从1到nnn,编号越小的动物能力越大。他们想投票选出森林之王,每只小动物可以投票选自己,或者与自己的偶像投票相同;如果没有偶像,就只能投自己。 已知小动物是否有偶像以及具体是谁,求每个人能够得到的最高票数是多少?问题分析崇拜的关系是传递的,如果崇拜关系当做树的一条边,题目所求即以iii为根的某棵树的节点数。此外,因为动物顺序是按照能力从大到小排序,所以后向遍历有ans[A[i]]+=ans[i]ans[A[i]] += ans[i]ans[A[i]]+=ans[i]原创 2021-03-15 14:43:14 · 871 阅读 · 0 评论 -
阿里2020.4.10笔试题——方格染色
问题描述给定一个m×nm \times nm×n的方格,有ccc种颜色的染料,每一种染料有c[i]c[i]c[i]升,每涂一个格子需要1L,对于某个格子上下左右4邻域的格子不能染成和本身格子一样的颜色,求是否能够找到染色方案?(保证升数总和和格子总数一致。)问题分析由抽屉原理可知,把多于nnn个的物体放到nnn个抽屉里,则至少有一个抽屉里的东西不少于两件。此外,因为相邻格子的横纵坐标和奇偶性不同,所以可以将奇数视作一种组合,偶数视作一种组合。因此,当有一种染料的升数多于某一种集合大小,则必定存在相邻各原创 2021-03-15 10:09:50 · 762 阅读 · 0 评论 -
阿里2020.4.10笔试题——取水最小距离和
问题描述二维格点上有nnn座房子,小强打算修一条平行yyy轴的水渠,水渠无限长,现在求小强修水渠的位置,能使得这nnn座房子到水渠的处置距离和最小,输出最小距离和。问题分析因为水渠是平行于yyy轴,且长度无限,所以本题的距离和只需考虑横坐标。因此,只需计算所有房子的中间位置(横坐标),再一一计算房子到水渠的距离,即可求解。代码示例n = int(input())row_list = []for _ in range(n): row, _ = map(int, input().spli原创 2021-03-15 10:20:05 · 391 阅读 · 0 评论 -
实习生活之字节跳动
博主上半年因为课程少(其实就是闲)的缘故,向各大中小 IT 公司,如字节跳动,360等的实习生岗位投递了简历,广撒网,多敛鱼,择优而从之。最终,博主看中字节跳动的高待遇——一天400,就近租房补贴,免费的一日三餐与下午茶打动(这谁顶得住啊),毅然决然地投入字节跳动的怀抱!谁拦不住我,我说的!如今,我已经离职,特意撰写此博客总结我的实习生活,并希望对大家有所帮助!面试首先,当然是介绍大家最紧张...原创 2019-07-16 15:23:03 · 25868 阅读 · 12 评论