网易笔试AK

第一题:二叉树含有2个叶结点的非叶子结点个数统计(AC)
m,n = map(int,input().split())
alls = set([i for i in range(1,m+1)])
nleaf = set()
from collections import defaultdict
dic = defaultdict(list)
for _ in range(n):
    a,b,c = input().split()
    dic[int(a)].append(int(c))
    nleaf.add(int(a))
leaf = alls-nleaf
re = 0
for k in dic:
    if len(dic[k])==2:
        flag=True
        for x in dic[k]:
            if x not in leaf:
                flag=False
        if flag:
            re+=1
print(re)
第二题:长度大于1的回文串个数(AC)
s = input()

def getC(l,r):
    count = 0
    while l>=0 and r<=len(s)-1 and s[l]==s[r]:
        if l!=r:
            count+=1
        l-=1
        r+=1
    return count

def getCounts(s):
    count = 0
    for i in range(len(s)):
        count+=getC(i,i)
        count+=getC(i,i+1)
    return count

if len(s)==1:
    print(0)
else:
    re = getCounts(s)
    print(re)
第三题:'a', 'b', 'c', 'x', 'y', 'z'偶数个最长序列长度(AC)
s = input()
if len(s)==1:
    print(0)
else:
    dic = {'a':0,'b':0,'c':0,'x':0,'y':0,'z':0}
    temp = {(0,0,0,0,0,0):-1}
    res = 0
    for i,char in enumerate(s):
        if char in dic:
            dic[char]=(dic[char]+1)%2
        idx = tuple(dic.values())
        if idx in temp:
            res = max(res, i-temp[idx])
        else:
            temp[idx]=i
    else:
        res=max(res, i-temp[tuple(dic.values())])
    print(res)
第四题:男女生约会二部图(AC)
man_id = list(map(int,input().split()))
woman_id = list(map(int,input().split()))
N = int(input())
man_x = dict()
woman_x = dict()
visited = dict()
t = dict()

for i in man_id:
    man_x[i]=-1
for i in woman_id:
    woman_x[i]=-1
    visited[i] = 0

for _ in range(N):
    a,b = map(int,input().split())
    t[(a,b)]=1

def path(u):
    for v in woman_id:
        if (u,v) in t and not visited[v]:
            visited[v]=1
            if woman_x[v]==-1:
                man_x[u]=v
                woman_x[v]=u
                return 1
            else:
                if path(woman_x[v]):
                    man_x[u]=v
                    woman_x[v]=u
                    return 1
    return 0

def maxMatch():
    res = 0
    for i in man_id:
        if man_x[i]==-1:
            for k in woman_id:
                visited[k]=0
        res+=path(i)
    return res
print(maxMatch())
#笔试题目##网易#
全部评论
点赞 回复 分享
发布于 2020-09-12 19:58

相关推荐

xiaolihuam...:当然还有一种情况是你多次一面挂,并且挂的原因都比较类似,例如每次都是算法题写不出来。面试官给你的评价大概率是算法能力有待加强,算法能力有待提高,基础知识掌握的不错,项目过关,但是coding要加强。短期内高强度面试并且每次都是因为同样的原因挂(这个你自己肯定很清楚),会形成刻板印象,因为你偶尔一次算法写不出来,面试官自己也能理解,因为他清楚的知道自己出去面试也不一定每一次面试算法都能写出来。但是连续几次他发现你的面屏里面都是算法有问题,他就认为这不是运气问题,而是能力问题,这种就是很客观的评价形成了刻白印象,所以你要保证自己。至少不能连续几次面试犯同样的错。算法这个东西比较难保证,但是有些东西是可以的,例如某一轮你挂的时候是因为数据库的索引,这个知识点答的不好,那你就要把数据库整体系统性的复习,下一轮面试你可以,项目打的不好,可以消息队列答的不好,但是绝对不可以数据库再答的不好了。当然事实上对于任何面试都应该这样查漏补缺,只是对于字节来说这个格外重要,有些面试官真的会问之前面试官问过的问题
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

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