9.6字节笔试

第一题AC,双数组一个存放最后一步是1步,一个存放最后一步是2步
从3到最后:
dp1[i] = dp[i - 1] + dp2[i - 1]
dp2[i] = dp1[i - 2]
print(dp1[-1] + dp2[-1])

第二暴力解法,63.64

第三题AC,对M分类讨论,当M大于3的时候
当数组的和大于0
data = data + [sum(data) * (M - 2)] + data
当小于0,
data = data + data
然后按原方法求即可

第四题20%,没有读懂题目,
3 3
1 2 3
到底怎么输出0,不应该是1吗😓

欢迎牛友们指点一下第二第四题🤣

#笔试题目##字节跳动#
全部评论
第二题代码如下: def get_answer(nums):     i=0     stack=[]     res=0     while i<len(nums):         if not stack&nbs***bsp;nums[stack[-1]]>=nums[i]:             stack.append(i)         else:             while stack and nums[stack[-1]]<nums[i]:                 val=stack.pop()                 if not stack:                     left=0                 else:                     left=stack[-1]+1                 right=i+1                 res=max(res,left*right)             stack.append(i)         i+=1     return res
2 回复 分享
发布于 2020-09-06 13:29
想问一下,楼主倒是把题目列出来啊,没看到题干……
点赞 回复 分享
发布于 2020-09-07 21:49
为什么数组和小于0的时候是加上两个data? 如果第一个数组的最大序列和是data,因为数组和是小于零的,加上后面的不是反而变小了吗 虽然可能加上最后一个的data变大,但是也有可能变小吧。。 求解答
点赞 回复 分享
发布于 2020-09-06 17:16
求问第三题 data怎么求 不会超时
点赞 回复 分享
发布于 2020-09-06 14:01
第二题可以用单调栈的解法,求每个元素左侧右侧第一个更大的元素下标即可,第四题不会qaq
点赞 回复 分享
发布于 2020-09-06 13:07

相关推荐

评论
4
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务