小米9.2笔试

买花:

有四个数组,长度都是n,从每个数组中取一个数,和为1000的取法。

这一题傻逼了,之写出来一个O(n^3)的解法,过一半多的测试用例。

后来看别人的解答,可以先计算前两个数组两两之和,后两个数组两两之和。之后就好做了。复杂度可以降到O(n^2)。

变体的编辑距离:

给两个字符串s1和s2,可以进行下面的操作:

1.  删除s1任何一个位置的字符

2. 在s2中任何位置插入任何一个字符3. 替换s1或者s2中的某个字符为任何字符

假设让s1和s2相等的最小操作次数的方案是唯一的,求这个方案中插入,删除,替换这三种操作的操作次数

s1 = input()
s2 = input()

# 变体的编辑距离
def f(s1, s2):
    m, n = len(s1), len(s2)
    dp = [[[0, 0, 0] for _ in range(n+1)] for _ in range(m+1)]
    
    # 初始化
    for i in range(1, n+1):
        dp[0][i] = [i, 0, 0]
    for i in range(1, m+1):
        dp[i][0] = [0, i, 0]
    
    for i in range(1, m+1):
        for j in range(1, n+1):
            if s1[i-1] == s2[j-1]:
                dp[i][j] = dp[i-1][j-1]
            else:
                t = [dp[i][j-1], dp[i-1][j], dp[i-1][j-1]]
                min_t = float('inf')
                for k in range(3):
                    if sum(t[k]) < min_t:
                        min_t = sum(t[k])
                        dp[i][j] = t[k][:]
                        dp[i][j][k] += 1
    return dp[-1][-1]

ans = f(s1, s2)
print(ans[0])
print(ans[1])
print(ans[2])

#小米##小米笔试##2024秋招#
全部评论

相关推荐

首先讲三个故事,关于牛客的事件一:2024年,牛客上有一对高学历情侣,求职方向与我当时一致,都是嵌入式方向。他们恰好是我的朋友,专业能力和学历背景都很扎实,也因此拿到了不少优质offer。和很多求职者一样,他们把offer情况整理后发在平台上,本意是记录与交流,但很快引发了争议。有声音指责他们“集邮”“不释放名额”,认为这种展示本身就是一种炫耀。最终讨论失控,当事人删除内容,事件也很快被遗忘。事件二:小红书评论区,一条评价获得了不少共鸣:“感觉牛客就是当年那群做题区毕业了开始找工作还收不住那股味,颇有一种从年级第一掉到年纪第二后抱怨考不上大学的味道”,这条评论被水印里这个同学转发到牛客后,评论...
小型域名服务器:当看到别人比自己强的时候,即便这是对方应得的,很多人会也下意识的歪曲解构对方的意图,来消解自己在这本就不存在的比较中输掉的自信,从而平白制造出很多无谓的争论。比如你会在空余时间来写优质好文,而我回家只会暗区突围,那么我就可以作为键盘侠在这里评论你是不是XXXXXXXX。即便我自己都知道这是假的,但只要这没那么容易证伪,那么当你开始回应的时候,脏水就已经泼出去了,后面可能会有更多的人带着情绪来给我点赞,而毫不关注你写的文章内容本身是啥了。
SAGIMA牛马咖啡
点赞 评论 收藏
分享
评论
3
16
分享

创作者周榜

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