美团8.13笔试,python

都没有AC😭😭😭
一直没有系统的学习python,一些东西用的不好😭😭😭

写得好烂,只想记录和跟大家讨论一下。

1. 送外卖

n, t = map(int, input().split())
tmp = list(map(int, input().split()))
tmp.sort()
# 用一个变量记录当前时间,一个记录使用魔法次数
current_t, count = 0, 0
for i in range(n):
    if current_t + t > tmp[i]:
        count += 1
    else:
        current_t += t print(count)

tmp里面表示订单的最晚送达时间,为了防止不是从小到大排序的首先需要排序。

后面的逻辑就比较简单,如果 当前时间 + 运输时间 > 最晚送达时间 就使用魔法,否则正常运送给同时更新当前时间。

2. 扫地机器人

import numpy as np


# 提取数据
x, y, step = map(int, input().split())
dem = list(map(str, input()))
arr = np.zeros((x, y))
arr[0, 0] = 1
# 记录
x1, y1, remain = 0, 0, 0
total = x * y
for i in range(step):
    if dem[i] == 'W':
        x1 -= 1
    elif dem[i] == 'A':
        y1 += 1
    elif dem[i] == 'S':
        x1 += 1
    else:
        y1 -= 1
    arr[x1, y1] = 1
    remain = total - arr.sum()
    if remain == 0:
        print('Yes')
        print(i+1)
        break
if remain > 0:
    print('No')
    print(int(remain))

用两个变量记录当前位置,一个变量记录剩余数目。(感觉那个二维数组挺占内存的?)
逻辑比较简单,每次获取往哪边走更新坐标然后记录就行。

3. 扑克牌

n = int(input())
pai = list(map(int, input().split()))
# 从后面开始往前拿牌
result = [pai[-1]]
for i in range(n-2, -1, -1):
    result.insert(0, pai[i])
    for j in range(2):
        temp = result[-1]
        result[1:] = result[:-1]
        result[0] = temp
print(result)

首先先执行两次从牌顶抽牌放到牌底的动作(洗牌),再执行开牌动作。
可以把从牌顶开牌理解成从牌顶拿走这张牌。
反过来想,先知道了开牌的顺序还原原来的顺序,那就把之前的动作反过来执行,先开牌后执行两次洗牌动作。

[1,2,3,4]  从后往前取,执行两次洗牌动作(从牌底拿牌放到牌顶)
1. [4] → [4] → [4]
2. [3,4] → [4,3] → [3,4]
3. [2,3,4] → [4,2,3] → [3,4,2]
4. [1,3,4,2] → [2,1,3,4] → [4,2,1,3]
[4,2,1,3]

4. 三元组

n = int(input())
a = list(map(int, input().split()))
count = 0
a_num = [a[i] for i in range(n-2)]
for j in range(1, n):
    for k in range(j+1, n):
        sum_ = 3 * a[j] - a[k]
        if sum_ in a_num:
            count += 1
print(count)

唉,我做的时候只想到了3个循环,看了别人的贴子之后才知道这种方法。
图片说明
只要想用一个数组存在a[i],然后再循环j,k,判断计算后的结果是否在数组中存在,存在则+1。
这种只需要两个循环,复杂度更低了。

#美团笔试#
全部评论
100%+82%+36%+82%+36%完整A的就一道….不知道说8月份之前投递的可以笔试三次是不是真的
点赞 回复 分享
发布于 2022-08-14 18:01
咱俩思路一样,我过了27
点赞 回复 分享
发布于 2022-08-14 07:37
第一题你都过了嘛  我思路一样但是没有全过
点赞 回复 分享
发布于 2022-08-14 03:43

相关推荐

昨天 16:40
已编辑
门头沟学院 C++
26学院本太难了,很多公司机筛就给我刷了。机会都难拿到如果是简历存在问题也欢迎拷打————————————————————分割线——————————————————————2026.3.4更新:发完贴之后,时不时投递又收到了不少的笔试/面试邀请。主要是之前投递简历出去之后基本上都是沉默状态,年后好转了不少timeline:2026.01.21 文远知行笔试,半年多没刷算法题 ->挂 (后续HR说春招可以重新安排笔试)2026.2.4     小鹏汇天 技术一面,第二周收到结果 ->挂2026.2.12   大众Cariad代招 技术二面 ->Offer2026.2.28   多益网络技术面试,由于风评太差,一直在犹豫要不要接面试 ->推迟-----------分割线-----------2026.3 月前的某一天,临时去电网报名了二批计算机岗位的笔试2026.3.6 从上家公司实习离职,氛围最好的一家公司,leader 说可以帮忙转正,但是流程太长,而且我们部门据说只有一个 hc,更想要研究生,我很有可能是会被签外包公司在这里干活,就离职了。2026.3.9 入职新公司,大众Cariad 以外部公司的身份进组,项目组签了三年,后续三年应该都可以在这里呆,不知道有没有希望原地跳槽。2026.3.10 电网考试居然说我通过资格审查了,短信约我去参加资格审查,请假一天,买了 12 号晚上的机票回成都2026.3.15 参加国家电网计算机类笔试2026.3.17 电网出成绩了,感觉很低。觉得已经🈚️了2026.3.18 收到电网面试通知,通知 3.22-3.25 这个时间去面试,我的岗位只招 1 个人。据说面试只有 2-3 人,不知道能不能成功----------分割线-----------2026.3.21 电网面试结束,感觉回答的还勉勉强强,大概是2个岗位分别招1个人,一共11人面试,实际来了9人2026.3.27 出面试成绩,满分100分,早上10:20左右发现面试成绩46,我震惊了,没截图,后面过了十分钟重新看发现面试成绩给我改成58了。但同样震惊。朋友问我是不是把面试官打了,哈哈
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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