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

菜鸡只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)



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

相关推荐

01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务