微软暑期实习生笔试

  1. 给了一段程序,然后告诉你这段程序performance很低,让你改改(输入是int array,做的是返回数组中所有两个相同元素的index差值中的最大值,用了两个for loop)
  2. 一个数组,index代表列数,A[i]代表第i列高度为A[i],有一种横着的stroke,高度为1,长度为任意,问最少几个stroke能覆盖这个图形。 e.g. 1,2,1-> 2; 5,8->8(这题我想不出efficient的做法,最后performance0分,蹲一位大佬
  3. 把一个整数N分成任意个【unique】【奇数】的和。return所有答案中,包含奇数最多的那一种(可能有多种,return任意一个就行)
#笔经##微软#
全部评论
第二题如果我没理解错题意的话是贪心,和NOIP2013D2T1和NOIP2018D1T1是同一道题;如果A[i-1]大于等于A[i],说明可以用前面的stroke延伸过来,对答案不产生贡献;否则对话,需要新产生A[i]-A[i-1]根stroke来覆盖后面更高的高度。所以答案就是Σ(A[i]-A[i-1] if(A[i]>A[i-1]))
1 回复
分享
发布于 2021-04-12 09:43
请问大佬第一题有什么不用双重循环的方法吗
1 回复
分享
发布于 2021-04-22 10:29
联易融
校招火热招聘中
官网直投
最后一题01背包可以做到O(n2),但是不知道数据范围.. 有O(n)的做法吗
1 回复
分享
发布于 2021-06-08 00:41
大佬多少分
点赞 回复
分享
发布于 2021-04-11 23:34

相关推荐

1 16 评论
分享
牛客网
牛客企业服务