首页 / 阿里笔试2020
#

阿里笔试2020

#
16377次浏览 222人互动
此刻你想和大家分享什么
热门 最新
2021-08-06 19:51
山东大学 Java
8.6,阿里笔试
8.6号的阿里笔试有点简单,全a了,第一题就是长整性问题,第二题典型的并查集,但要注意输入输出会不会超时
虽千万里:第一题用long long类型就能过 int只能过60%
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
分享
2020-03-25 15:08
湖南工业大学 C++
#阿里笔试2020# 看到了这里都在讨论3.23的两道题,但是看到大家解法好像都不是太好,我分享一下我的解题方法吧。第一题 求排列组合。在n个人中可以取任意数目的人数组成一队,并且可以在其中选队长,问一共有多少种组合方式,最后的结果模10^9+7.这题更像是一个数学题。由组合公式可知 C(m,N)=n!/((n-m)!+m!)每个组合中队长的选举可能有m种那么每种人数组合就是C(m,N)*m 举个例子 假设N=4则一共有 C(1,4)*1+C(2,4)*2+C(3,4)*3+C(4,4)*4 =32种那么N个人一共有n+n*n(n-1)+n*(n-1)(n-2)+n(n-1)(n-2)(n-3)……+n*n(n-1)+n种,值得注意的是由于每个因子都乘了一个m 所以和组合公式有一点点差别。原本的本来是C(m,n)=C(n-m,n),现在是C(m+1,n)=C(n-m,n)两边完全对称,我们只需要算到n/2,然后乘以二就可以了。则上述公式可以提公因式得:n(1+(n-1)(1+(n-2)(1+(n-3)(……1+(n-n/2)(1)))))*2。这里又有一个小陷阱。奇数和偶数的公式是不一样的,偶数当然两边完全一致,直接乘2就好了,奇数中间只有一个,不能乘2,所以我们最后加上中间那个组合就可以了。C++代码如下:int howMany(int n) {int result = 0;for (int i = n/2+1; i {result = (result + 1)*i;}if (n % 2 == 0)//偶数 直接对半*2{result= result*2;}else {//奇数  偶数的基础上+上n/2的排列组合int temp1=1,temp2=1;for (int i = n / 2 + 1; i temp1 *= i;}for (int i = 1; i temp2 *= i;}result = temp1 / temp2 + result;}return result;}第二题写不下了 见评论
投递阿里巴巴等公司10个岗位 C++求职圈
点赞 评论 收藏
分享
2020-03-30 20:18
已编辑
北京大学 iOS开发
今晚阿里有人做吗?
为什么第一道只能通过测试用例。。
while(true){offer++};:我服了,运行超时就不能提示运行超时吗?我还以为我逻辑有问题一直在调试
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
分享
2020-03-25 16:57
华东理工大学 Java
点赞 评论 收藏
分享
2020-03-23 22:17
已编辑
华中科技大学 Java
3月23日阿里笔试
两道一共a了0%的出来打卡。
himuralee:第一题快速幂,第二题bfs但是需要先入队特殊的走法,但还是只有90%
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
分享
2020-04-17 10:09
字节跳动_研发
阿里笔试417
有没有老哥交流一下第一题啊,我太菜了,没具体的思路。
纸夜:用分治 1. 将奇数分为右半边,偶数分为左半边,因为 奇数+偶数=奇数 不可能和任意一个2*n相等 2.考虑到奇数侧 有 x = 2n + 1,所以 我们构造一个0~n/2的序列然后将其乘2加1就构造出了左半边 3.偶数侧同理 4. 对于 n <=3的情况直接构造,分别是 int res1[] = {0}, int res2[] = {0,1}, int res3[] = {0,2,1},
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
分享
2020-04-15 19:23
已编辑
上海交通大学 C++
阿里笔试 附代码C++ 2020.4.15
第一题n个人,每个人有一个特征值a,给n个人安排座位,最大化邻座两个人之间的特征值差异程度之和。输入:第一行一个正整数n,带表总人数第二行包含n个正整数,第i个正整数ai表示第i个人的特征值注意:邻座的定义是第i人(1&lt;i&lt;n)的邻座是i-1,i+1;&nbsp;第1人的邻座是2,n;&nbsp;第n人的邻座是1,n-1。邻座i,j差异值是|ai-aj|,取绝对值。每对邻座差异值只算一次。输出第一行:最大差异值第二行:输出用空格隔开的n个数,满足差异值最大化,重新排列过的特征值。(如果有多组,输出一组即可)题解:使用了交叉排序的思想,比如对于&nbsp;3,6,2,9。第一步:排序,2,3,6,9,&nbsp;时间复杂度...
郭子路:第二题100%,分别a, b排序,双指针 import sys n = int(sys.stdin.readline().strip()) nums = list() for i in range(n): a, b = map(int, sys.stdin.readline().strip().split()) nums.append([a, b, i]) nums_a = sorted(nums, key=lambda x:x[0], reverse=True) nums_b = sorted(nums, key=lambda x:x[1], reverse=True) posa = 0 posb = 0 res = 0 while(posa < n and posb < n): pre_a = nums_a[posa] pre_b = nums_b[posb] if pre_a[2] == pre_b[2]: posa += 1 continue val_a = pre_a[0]+pre_b[0] val_b = pre_a[1]+pre_b[1] val = min(val_a, val_b) res = max(res, val) if (val_a > val_b): posa += 1 else: posb += 1 print (res/2)
投递阿里巴巴等公司10个岗位 >
点赞 评论 收藏
分享
2020-03-19 15:19
已编辑
北京邮电大学 前端工程师
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客企业服务