小米算法笔试

第一题 小米和大米拿薯片获取最大快乐值
第二题 判断是否是回文链表

第一题A了64%,到现在都不知道哪里考虑不周,有人知道咋解嘛
nums = list(map(int,input().split()))
sum = 0
for i in ragne(len(nums)):
if i%2==0:
sum+=max(nums[0],nums[-1])
else:
sum-=max(nums[0],nums[-1])
if nums[0]>=nums[-1]:
nums.pop(0)
else:
nums.pop()
if sum>=0:
print("Yes")
else:
print("NO")

第二题AC
nums = list(map(int,input().split()))
if nums==nums[::-1]:
print("True")
else:
print("False")
#小米##笔试题目#
全部评论
你用的是贪心算法。不是全局最优啊。存在这种情况:先选一个小的快乐值薯片,后边反而会有更大的薯片可以得到。比如这个序列 2 4 1 1
点赞 回复 分享
发布于 2019-09-06 20:48
第一题我这个思路只有45%
点赞 回复 分享
发布于 2019-09-07 00:22
第二题直接输出yes就64 我试了😂
点赞 回复 分享
发布于 2019-09-06 23:09
求C++的代码啊
点赞 回复 分享
发布于 2019-09-06 23:07
def solve(nums):     n = len(nums)     cumsum = [0]*(n+1)     for i, x in enumerate(nums):         cumsum[i+1] = cumsum[i] + x              dp = [[0 for _ in range(n+1)] for _ in range(n+1)]     for i in range(n-1, -1, -1):         for j in range(i+1, n+1):             if j == i+1:                 dp[i][j] = nums[i]             else:                 dp[i][j] = max(nums[i] + cumsum[j]-cumsum[i+1] - dp[i+1][j],                                nums[j-1] + cumsum[j-1]-cumsum[i] - dp[i][j-1])     if dp[0][n]*2 >= cumsum[-1]:         return 'Yes'     return 'No' while 1:     s = input()     if s != '':         print(solve([int(x) for x in s.split(' ')]))     else:         break 为啥18% 就 RunTime Error ,想不明白哪里错了
点赞 回复 分享
发布于 2019-09-06 21:00
第二题错的啊,能ac??
点赞 回复 分享
发布于 2019-09-06 20:55
可以贴下第二题的源码吗?感谢
点赞 回复 分享
发布于 2019-09-06 20:48
第二题咋做
点赞 回复 分享
发布于 2019-09-06 20:44

相关推荐

不愿透露姓名的神秘牛友
04-18 00:14
某工业 嵌入式软件工程师 9K×13薪 本科其他
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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