美团笔试8.13

有大佬ac了第四题吗😥
提供下第3,4,5题目的python代码:(1,2题没有存在本地ide)

加一个魔法外卖的代码..:
arr = [100, 101, 102, 103, 104, 105]
t = 5
arr.sort()
magic = 0
cur_time = 0
for order in arr:
    if order-t>=cur_time:
        cur_time += t
    else:
        magic += 1
print(magic)

第三题
arr = [1,2,3,4]
ret = deque()
len_cnt = 0

for val in arr[::-1]:
    ret.appendleft(val)
    if len_cnt >= 2:
        val1 = ret.pop()
        val2 = ret.pop()
        ret.appendleft(val1)
        ret.appendleft(val2)
    len_cnt += 1
print(ret)
res = " ".join(list(map(str,ret)))
print(res)

第四题 (只过了91%)
arr = [4,2,2,2,2]
n = 5
index = defaultdict(list)
count = 0
for id,val in enumerate(arr):
    index[val].append(id)
for i in range(n-2):
    for j in range(i+1,n-1):
        ak = 3*arr[j]-arr[i]
        if ak in index:
            possible = index[ak]
            for idx in possible:
                if idx>j: count+=1
print(count)

第五题
class TreeNode:
    def __init__(self,val=None):
        self.val = val
        self.left = None
        self.right = None

nodes = [5, 7, 8]
TreeList = []
root = TreeNode(nodes[0])
TreeList.append(root)
#创建二叉树
for i,node in enumerate(nodes[1:],2):
    pa = TreeList[i//2-1]
    if i%2==0:#左子树
        new_node = TreeNode(node)
        pa.left = new_node

    else:
        new_node = TreeNode(node)
        pa.right = new_node
    TreeList.append(new_node)

def solute(root):
    max_value = [0]
    def dfs(root,acc):
        if not root:
            max_value[0] = max(max_value[0],acc)
            return     
        acc += root.val
        dfs(root.left,acc)
        dfs(root.right,acc)
    dfs(root,0)
    print(max_value[0])

solute(root)





#美团笔试##美团##笔试#
全部评论
第四道题AC不出来,时间来不及就停在64%😣
1 回复 分享
发布于 2022-08-13 18:07
你可能超时了。思路基本是对的。 但可以考虑枚举j和k。 i由j产生。index(aj).append(j)。此时的j代表新的j要找到i。 每次count+=len(index(ai))。
1 回复 分享
发布于 2022-08-13 18:11
mark
点赞 回复 分享
发布于 2022-08-13 18:03
第四题剪枝最后想到可以用hash装第三个数,这样子可以只算不同情况。不够时间不过了没写,只知道可行性怎么样
点赞 回复 分享
发布于 2022-08-13 18:03
我也4.91,能有机会吗😥感觉应该很多5的
点赞 回复 分享
发布于 2022-08-13 18:04
java第四题90。。。
点赞 回复 分享
发布于 2022-08-13 18:04
前端1/2有机会吗
点赞 回复 分享
发布于 2022-08-13 18:05
n, t = list(map(int, input().strip().split())) deadlines = list(map(int, input().strip().split())) cur = 0 ans = n for i in range(len(deadlines)):     if deadlines[i]>=cur+t:         ans-=1         cur+=t print(ans) 大佬帮我看看第一题这样模拟思路对么?
点赞 回复 分享
发布于 2022-08-13 18:08
今年hc还少,笔试有没有可能直接卡到4
点赞 回复 分享
发布于 2022-08-13 18:09
有测开方向的吗 2道题全a了
点赞 回复 分享
发布于 2022-08-13 18:11
t3这样写可以a吗,我用切片模拟a了82
点赞 回复 分享
发布于 2022-08-13 18:26
请问有用c++写第三题的吗?
点赞 回复 分享
发布于 2022-08-13 19:12

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
评论
2
17
分享
牛客网
牛客企业服务