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

相关推荐

点赞 评论 收藏
分享
10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
点赞 12 评论
分享
牛客网
牛客企业服务