阿里笔试7.24交流

1. 吃烧饼,有n个盘子和每个盘子的烧饼数,每次选一个x(x <= n),吃掉第1~x号盘子的一个烧饼,若第1~x号盘子中有空盘,则不能选择这个x。 假设胃无限大,问最多可以吃多少烧饼。
样例:
输入
3
2 1 3
输出:
4

这题O(n),记录一个当前最小值即可。

2. N行L列的灯,有L个开关,第i个可以控制第i列,使得该列灯状态反转(开变关,关变开)。行之间可以任意交换。问给定初始灯状态和目标灯状态,能否从初始变到目标状态,能的话最少要按几次开关。
这题我一开始题目没看清,以为只能开始的时候行互换,做完才发现错了,可是后来时间紧张就更加没思路了,求问大佬怎么做啊
#笔试题目#
全部评论
第一题代码 def f(nums):     for i in range(1, len(nums)):         nums[i] = min(nums[i - 1], nums[i])     return sum(nums)
2 回复 分享
发布于 2020-07-24 20:25
大佬第一题有代码吗。求发下
1 回复 分享
发布于 2020-07-24 20:17
第二题我一直20%,吐了。https://blog.csdn.net/ssllyf/article/details/104334352,网上题解连样例都过不了。
点赞 回复 分享
发布于 2020-07-24 20:18
请问记录当前最小值和,一下找到全局最小值有啥区别
点赞 回复 分享
发布于 2020-07-24 21:11
第二题看题目的话像一个dfs(感觉和八数码问题很像),各种剪枝还是过不了的话可能就是考察A*算法了
点赞 回复 分享
发布于 2020-07-25 08:46
第二题早就有了,哈哈,也没写出来,太菜了,https://blog.csdn.net/ssllyf/article/details/104334352?tdsourcetag=s_pctim_aiomsg 第二题可以看这个
点赞 回复 分享
发布于 2020-07-25 14:04
第二题如果只能互换行的话,那岂不是相当于行变换不会改变一列灯亮着的个数?所以首先判断列能否满足目标列亮灯的个数吧,如果不能直接返回-1,然后再进行行变换,行变换不会改变行内数据,把行内数据当成int变量去排序,如果源和目标最后的排序结果相同则代表能够变换出来,最后统计列灯反转的次数就可以了吧。 我不知道我理解的对不对。我没有参加这场比试
点赞 回复 分享
发布于 2020-07-25 21:44
请问这个笔试时间是可以自己选择的么?我的笔试公告没有任何信息。。
点赞 回复 分享
发布于 2020-07-26 13:07
看了这么多答案,还是没有理解第一题的意思。。。害怕。 每次都选最右为x,岂不是能全吃完吗
点赞 回复 分享
发布于 2020-07-27 11:37
第一题没明白为啥最小值维护?213 ,怎么吃。吃x=3,吃3个,然后吃x=1盘。这样吗? 那为啥是最小值加和?
点赞 回复 分享
发布于 2020-07-27 18:41

相关推荐

不愿透露姓名的神秘牛友
11-15 12:37
泰康科技 数据分析 年包15万 硕士985
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-21 21:59
已编辑
美团 Java开发 32.5 硕士211
选钝角的候选人很聪敏:滴滴呗,好的工作环境比几万块钱重要多了,为什么要赌两个没试过的环境
点赞 评论 收藏
分享
点赞 20 评论
分享
牛客网
牛客企业服务