腾讯后台开发 笔试 2、3题

腾讯后台开发 笔试 2、3题

第一题暴力了也只是10%,可能菜是原罪

第二题 字符串操作 使字符串中不能出现 "01" 和 "10"


# 1
if __name__ == '__main__':
    n = int(input())
    line = input()
    # 每次检查字符串的起点,减小时间复杂度
    start = 0
    while True:
        # flag 判断是否还存在非法字符串
        flag = True
        for k in range(start, len(line)):
            try:
                if line[k] == '0' and line[k+1] == '1' or line[k] == '1' and line[k+1] == '0':
                    line = line[:k] + line[k + 2:]
                    flag = False
                    start = max(k - 1, 0)
                    break
            except:
                break
        if flag:
            break
    print(len(line))

# 2
if __name__ == '__main__':
    n = int(input())
    line = input()
    _map = {
        '1': 0,
        '0': 0
    }
    for i in line:
        _map[i] += 1
    print(abs(_map['1']-_map['0']))

第三题 给怪兽付金币,求最小付出,雇佣的怪兽会一直守护,遇见的怪兽战力必须小于等于已经雇佣的怪兽战力总和。


def dp(_fight, _money):
    if len(_fight) == 1:
        return [_fight[0], _money[0]]
    _fight_num, _need = dp(_fight[:-1], _money[:-1])
    # 遇见的怪兽战力必须小于等于已有的战力总和,才可以不雇佣
    if _fight[-1] > _fight_num:
        return [_fight_num+_fight[-1], _need+_money[-1]]
    # 如果雇佣当前的怪兽付出的总金额小于下一个遇见的怪兽的保护费,则雇佣当前怪兽
    elif _need + _money[-1] < money[len(_money)]:
        return [_fight_num+_fight[-1], _need+_money[-1]]
    return [_fight_num, _need]


if __name__ == '__main__':
    _ = input()
    fight = list(map(int, input().split()))
    money = list(map(int, input().split()))
    # 防止越界
    fight.append(0)
    money.append(0)
    fight_num, need = dp(fight[:-1], money[:-1])
    print(need)
#腾讯##笔试题目##实习##题解#
全部评论
https://paste.ubuntu.com/p/vBMDBFmf2w/ 第三题暴搜,自己写的
点赞 回复 分享
发布于 2019-04-06 13:23
你的解法本质是贪心,但是实际上是不可行的,譬如fight=[3 3 5], money = [1, 1, 2], 你的方***选择收买1、3怪兽,但实际应该 选择1、2
点赞 回复 分享
发布于 2019-04-06 10:29
第三题你这种算法只是凑巧过了后台用例,比如fight = [8, 5, 2,10,16], money = [1,1,1,2,2]
点赞 回复 分享
发布于 2019-04-05 22:47
5 8 1 1 10 13 2 1 1 3 4 这个样例不应该是2+3=5吗 运行出来是6
点赞 回复 分享
发布于 2019-04-05 22:14
第二题其实统计0和1的个数差应该就行
点赞 回复 分享
发布于 2019-04-05 21:59

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结:&nbsp;27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
字节7000实习来了,你...
点赞 评论 收藏
分享
评论
点赞
12
分享

创作者周榜

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