2023.4.1 美团笔试

第一题

给出一个加号连接的操作序列,使用加减乘除随机替换其中一个加号,求修改之后的结果。

这个题Python只过了18%的点,只要求一位小数感觉也不是精度问题。有点奇怪。

n = int(input())
a = list(map(float, input().split(" ")))

m = int(input())
ops = input().split(" ")
assert len(ops) == 2*m
sum_a = sum(a)

ans = []
for i in range(m):
    idx, op = int(ops[2*i]), ops[2*i+1]
    tmp = float(eval(f"{a[idx-1]}{op}{a[idx]}") - a[idx-1] - a[idx])
    if op == "+":
        tmp = a[idx-1] + a[idx] - a[idx-1] - a[idx]
    if op == "-":
        tmp = a[idx-1] - a[idx] - a[idx-1] - a[idx]
    if op == "*":
        tmp = a[idx-1] * a[idx] - a[idx-1] - a[idx]
    if op == "/":
        tmp = a[idx-1] / a[idx] - a[idx-1] - a[idx]
    ans.append(f"{(sum_a + tmp):.1f}")
print(" ".join(ans))

第二题

第二题求一个数组任意排序之后,求最小的相邻两数的差的和,排序即可。AC

n = int(input())
a = list(map(int, input().split()))
a = sorted(a)
# print(a)
ans = 0
for i in range(n-1):
    ans += a[i+1]-a[i]
print(ans)

第三题

树状数字板子题,单点更新,区间求和。AC

class BinTree:
    def __init__(self, n):
        self.l = [0] * (n + 1)
        self.n = n

    def lowbit(self, x):
        return x & -x
    
    def add(self, x, y):
        while x <= n:
            self.l[x] += y
            x += self.lowbit(x)
            
    def cal(self, x):
        ans = 0
        while x > 0:
            ans += self.l[x]
            x -= self.lowbit(x)
        return ans
    
n, m = list(map(int, input().split()))
op = list(map(int, input().split()))
x = list(map(int, input().split()))
y = list(map(int, input().split()))

# print(n, m)
# print(op)
# print(x)
# print(y)
tree = BinTree(n)
ans = []
for i in range(m):
    # print(op[i], x[i], y[i])
    if op[i] == 1:
        ans.append(str(tree.cal(y[i]) - tree.cal(x[i]-1)))
    else:
        cur = tree.cal(x[i]) - tree.cal(x[i]-1)
        tree.add(x[i], y[i] - cur)
print(" ".join(ans))

第四题

倒水🫗题,题有点长不写了,看代码吧。AC

n = int(input())
x = list(map(int, input().split()))
y = list(map(int, input().split()))
z = list(map(int, input().split()))
ans = [0] * n
for i in range(n-1, -1, -1):
    cnt = 0
    tmp = 10**18
    for j in range(i, -1, -1):
        cnt += x[j] - y[j]
        tmp = min(tmp, z[j] * cnt)
    ans[i] = tmp
m = int(input())
q = list(map(int, input().split()))
for i in range(m):
    print(ans[q[i]-1], sep=" ")

全部评论
美团笔试只考算法嘛,有没有其他的网络,操作系统数据库的选择题
点赞 回复 分享
发布于 2023-04-07 15:54 江苏
话说我一直在纠结第四题累加后的cnt能直接和z[j]相乘吗,我在纠结会不会j倒一次,j+1倒一次(虽然我不知道我为啥纠结这,逻辑看没想明白
点赞 回复 分享
发布于 2023-04-01 19:06 广东
第一题用python永远18%,python的round函数有毒,小心~
点赞 回复 分享
发布于 2023-04-01 13:27 陕西

相关推荐

年纪大的小汤姆:哥们你是不是真和这人有仇😨
点赞 评论 收藏
分享
emmm别问我为啥上一条帖子隔了两个月我才开始投简历和拿offer,因为我懒😰简单流程如下:周一凌晨改好的简历,然后到处乱投简历;周二接到了三维家的一面通知,临时抱佛脚的背了一些八股;周三上午一面下午通知第二天hr面;周四上午hr面下午拿offer,遂收手支线:在BOSS上顺手投了几个大厂,投字节的时候不小心投城客户端了,结果过了一天HR突然把我简历要走了,还问我能不能整客户端,我直接一口答应(脏面评警告😢)结果在周三下午的时候给我打电话,说前端有空缺实习岗,问我有没有兴趣,然后就跟我约了周四下午一面😰我都没咋准备啊,咩都不会啊😭结果周四下午面完,晚上打电话通知过一面了,赶紧把二面约在下周一下午,留点缓冲时间。逆大天了,我一半的问题都不会,他居然给我过了?运气未免有点好了😥现在正在恶补计网、网安、性能优化的东西(这三大板块我是几乎一点不会,一面几乎一点答不出来,加上我又没怎么背八股,这块被干烂了😵)心得体会与经验:1.&nbsp;我giao怎么这么快就结束了,我还以为要找好久😨2.&nbsp;大厂的面试问题真的和中厂小厂很大不同,比如在三维家我能自己吹水到vue的数据劫持、Proxy代理响应式之类的他们就觉得很不错了,但是在字节你但凡敢提到一下就会追问你细节了,一追问马脚就全漏出来了3.&nbsp;有信心真的很重要,我感觉我能拿中厂offer最重要的就是吹水吹出自信来了,以至于三维家面试反问面试官有哪里还需要改进的时候,他就说很不错了解的很多😦4.&nbsp;理解很重要,我从头到尾真没背过很多八股,不过有一些知识确实是敲过代码验证过,所以面试的时候能吹水吹得出来😇想了解面经啥的可以直接评论区问我,但我可能也说不全,因为我没有记录,而且今天摆了一天感觉记忆快清空了😵下面是故事时间:我暑假刚开始的时候才开始准备八股,印象很深那个时候连什么原型、事件循环、闭包这些名词都没听过,资料也不知道怎么找,就一直零零散散的准备,感觉也只有js稍微背了一下八股,其他很多时候都是靠完全理解和手写熟悉一些机制的,但这样做效率很低,反正准备了一个多星期半个月就开摆了😭结果一摆就摆到了开学,笔记是乱七八糟的,八股是忘光光的,简历是一直没改的,实习也是一直没投过的。直到上周日晚上偶然和师兄聊天,他突然问我“你怎么还不找实习”,那天晚上才幡然醒悟,是时候做点事情了😡然后就按照上面描述的来走了。其实我感觉我从头到尾都没背特别多八股,也没怎么找刷题资料啥的,早期就是翻尚硅谷或者黑马的入门视频从头学起,中期用面试鸭看了一点点题,主要是在学js机制和敲js代码,后期才发现了w3c的面经网站,然后在那里看着学(那个时候已经懒得敲了,因为有些问题与代码感觉不像是给找实习的看的,忒细了点😂)接下来继续准备字节二面吧,虽然几乎没啥可能可以通过,但是万一有奇迹呢?😍😍😍也祝大家能够早日拿到心仪的offer
我的offer呢😡:我已经预见10天后你会发,节孝子启动了
投递三维家等公司10个岗位
点赞 评论 收藏
分享
评论
4
21
分享

创作者周榜

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