腾讯后台开发 笔试 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

相关推荐

#简历#先说一说我自己的想法,很多人都很排斥苍穹外卖,认为没什么技术点和含金量,但实际上我觉得恰恰相反,苍穹外卖虽然代码本身并不是你自身能力的证明,但是是作为一个新人学习时很好的跳板和原始框架,在这个框架上进行的改进可以很好的辐射到你自己的个人成果上,并作为你和面试官聊天的筹码大多数人的苍穹外卖只写增删改查,千篇一律,吸引不了面试官,所以这才让大家误以为只要是苍穹外卖就不要写进简历里这种误区,但实际上如果你在原有的层面上进行改进,并作为你的项目亮点和面试官介绍,告诉他你的苍穹外卖和别人的有什么不同,增加了哪些技术难点,这才显得你是完全自己理解了这个项目,并且有自己动手实践项目的能力,而不是就看了个课程就以为自己会了,就当成自己的了,如此一来,这反而成为你的加分项苍穹外卖为什么看的人最多,说明它好啊,如果它不好,为什么看的人还这么多,想清楚这个逻辑,我觉得要做的最重要的事,就是如何在原有框架上进行改进提效,比起听其他人的话重新搞一个项目性价比高得多,而且我亲测项目并没有成为我找到工作的阻碍,我投的大厂一大半都给我面试了,而且很多不止一个部门,退一万步说,当你手头没有其他项目的时候,有苍穹外卖总比什么都没有的好很多,不需要因为苍穹外卖有任何心理负担关于简历的任何部分都欢迎大家提意见,十分感谢大家,祝大家找实习+秋招顺利上岸,offer拿到手软#简历中的项目经历要怎么写##我的上岸简历长这样##最后再改一次简历##简历##简历被挂麻了,求建议#
点赞 评论 收藏
分享
点赞 12 评论
分享
牛客网
牛客企业服务