腾讯算法笔试问题,求解答

菜鸡只A了一道,一个30%,一个随便输出a了18%
只写一下记得的题目
1.找最长的符合(长度为偶数,左递减,右递增,最低点值相同)的子字符串长度。
自己写的也蒙蒙的,思路是找两个相同的数再计算左长度右长度。。。
2.方程解的问题,直接跳过。。。
3.绳子剪短期望,跳过
4.圆环内有六个数,判断是否存在两个相同的圆环。AC
if __name__=="__main__":
    t = int(input())
    for i in range(t):
        m = int(input())
        flag = 0
        unique = set()
        for j in range(m):
            s = list(map(int,input().split()))
            s = sorted(s)
            s = ''.join(list(map(str,s)))
            if s in unique:
                flag = 1
            else:
                unique.add(s)
        if flag==0:
            print('NO')
        else:
            print('YES')
5.从一个点到另外的点再回来这个点的最短路径,通过30%。不知道哪里有问题,求解答
def helper(roadDic,start,nums,l):
    res = [float('+inf')]*(l+1)
    res[start]=0
    queue = [start]
    while(queue):
        cur = queue.pop(0)
        for road in roadDic[cur]:
            if road[1]+res[cur]<res[road[0]]:
                res[road[0]] = road[1]+res[cur]
            queue.append(road[0])
        if cur==nums:
            ra = res[nums]
            break
    return ra
if __name__=="__main__":
    nums,roads,times = list(map(int,input().split()))
    roadDic = {}
    for i in range(roads):
        temp = list(map(int,input().split()))
        if temp[0] not in roadDic:
            roadDic[temp[0]]=[(temp[1],temp[2])]
        else:
            roadDic[temp[0]].append((temp[1],temp[2]))
    l = nums
    print((helper(roadDic,1,nums,l)+helper(roadDic,nums,1,l))*times)



#腾讯##笔试题目#
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 21:08
点赞 评论 收藏
分享
OPPO,伤害人你有一套
又要到饭了bro:Oppo也学着华子那一套筛选方法了。
投递OPPO等公司10个岗位 > 非技术投递记录
点赞 评论 收藏
分享
08-29 07:47
已编辑
莆田学院 Java
路上小荷:小孙,你好,我是由XX幼儿园、XX小学、XX初中、XX高中、XX大***合培养的研究生,想寻找能够陪我一起成长,登上人生巅峰的公司。在公司任职期间公司需要提供免费食宿、百万年薪以及私人医生。预计65岁退休,退休后公司可以求我给新员工讲述奋斗历程
点赞 评论 收藏
分享
代码不跑我跑_bug版:对的人会站在你的前途里,后面会有更适合你的offer的。
点赞 评论 收藏
分享
1 2 评论
分享
牛客网
牛客企业服务