【9.12】网易2021校招笔试-算法工程师 题解

4道编程题,1道问答题

编程题都是板子题
1 AC
2 AC
3 过0.6
4 AC

本菜鸡分享一下编程题的题解

第一题

题目大意

找满足条件(两个孩子节点为叶子节点)的节点的个数

解法

遍历每个节点, 是否满足条件. 时间复杂度O(N)

代码(AC)

class TreeNode:
    def __init__(self, x):
        self.id = x
        self.left = None
        self.right = None

    def is_leaf(self):
        return self.left is None and self.right is None

    def two_children_are_leaves(self):
        return (self.left is not None
                and self.left.is_leaf()) and (self.right is not None
                                              and self.right.is_leaf())


line = input()
m, n = list(map(int, line.strip().split()))

# m 点数
# n 边数

# 点 id从1开始
nodes = [None] * (m + 1)
for i in range(1, m + 1):
    nodes[i] = TreeNode(i)

for i in range(n):
    # n条边
    line = input()
    line_split = line.strip().split()
    parent = int(line_split[0])
    left_or_right = line_split[1]
    child = int(line_split[2])
    if left_or_right == 'left':
        nodes[parent].left = nodes[child]
    else:
        nodes[parent].right = nodes[child]

cnt = 0
for i in range(1, m + 1):
    if nodes[i].two_children_are_leaves():
        cnt += 1

print(cnt)

第二题

题目大意

回文子串的数量
长为1的子串,不算回文

解法

马拉车、中心扩展法都可

代码(AC)

def expand(left, right):
    global s
    global len_s
    while left >= 0 and right < len_s and s[left] == s[right]:
        left -= 1
        right += 1
    return left + 1, right - 1  # 计算长度


def solve():
    global s
    global len_s
    global cnt

    if len_s == 1:
        return 0
    if len_s == 2:
        if s[0] == s[1]:
            return 1
        else:
            return 0

    # 长度3以上
    for i in range(len_s):
        # 奇数
        odd_left, odd_right = expand(i, i)
        odd_cnt = (odd_right - odd_left) // 2
        # 偶数
        if i < len_s - 1:
            even_left, even_right = expand(i, i + 1)
            even_cnt = (even_right - even_left + 1) // 2
        else:
            even_cnt = 0

        cnt[i] = odd_cnt + even_cnt

    all_cnt = 0
    for i in range(len_s):
        all_cnt += cnt[i]

    return all_cnt


s = input()
len_s = len(s)
cnt = [0] * len_s

res = solve()
print(res)

第三题

题目大意

给一个字符串s,
求s中字符a、b、c、x、y、z的出现次数为偶数的最长子串的长度

解法

DP
只过了60%,有没有大佬给个思路

第四题

二部图最大匹配
def dfs(boy_id):
    for girl_id in girl_ids:
        if girl_id in boy_to_girl[boy_id] and (not girl_vis[girl_id]):
            girl_vis[girl_id] = True
            if girl_res[girl_id] is None || dfs(girl_res[girl_id]):
                girl_res[girl_id] = boy_id
                return True

    return False


line = input()
boy_ids = [int(_) for _ in line.strip().split()]
line = input()
girl_ids = [int(_) for _ in line.strip().split()]

n = int(input())

boy_to_girl = {}
for boy_id in boy_ids:
    boy_to_girl[boy_id] = []

girl_res = {}  # 保存这个女孩匹配的boy
for girl_id in girl_ids:
    girl_res[girl_id] = None  # None表未匹配

girl_vis = {}  # 表示是否已经被占用
for girl_id in girl_ids:
    girl_vis[girl_id] = False

for i in range(n):
    line = input()
    line_int = [int(_) for _ in line.strip().split()]
    tmp_boy_id = line_int[0]
    tmp_girl_id = line_int[1]
    boy_to_girl[tmp_boy_id].append(tmp_girl_id)

cnt = 0
for boy_id in boy_ids:
    for girl_id in girl_ids:
        girl_vis[girl_id] = False
    if dfs(boy_id):
        cnt += 1

print(cnt)




#笔试题目##网易#
全部评论
一个有T3的题解:https://blog.csdn.net/qq_38649940/article/details/108551501
点赞 回复 分享
发布于 2020-09-12 17:29
第三题是leetcode 1371。大佬真的强
点赞 回复 分享
发布于 2020-09-12 17:27

相关推荐

Tom哥981:让我来压力你!!!: 这份简历看着“技术词堆得满”,实则是“虚胖没干货”,槽点一抓一大把: 1. **项目描述是“技术名词报菜名”,没半分自己的实际价值** 不管是IntelliDoc还是人人探店,全是堆Redis、Elasticsearch、RAG这些时髦词,但你到底干了啥?“基于Redis Bitmap管理分片”是你写了核心逻辑还是只调用了API?“QPS提升至1500”是你独立压测优化的,还是团队成果你蹭着写?全程没“我负责XX模块”“解决了XX具体问题”,纯把技术文档里的术语扒下来凑字数,看着像“知道名词但没实际动手”的实习生抄的。 2. **短项目塞满超纲技术点,可信度直接***** IntelliDoc就干了5个月,又是RAG又是大模型流式响应又是RBAC权限,这堆活儿正经团队分工干都得小半年,你一个后端开发5个月能吃透这么多?明显是把能想到的技术全往里面塞,生怕别人知道你实际只做了个文件上传——这种“技术堆砌式造假”,面试官一眼就能看出水分。 3. **技能栏是“模糊词混子集合”,没半点硬核度** “熟悉HashMap底层”“了解JVM内存模型”——“熟悉”是能手写扩容逻辑?“了解”是能排查GC问题?全是模棱两可的词,既没对应项目里的实践,也没体现深度,等于白写;项目里用了Elasticsearch的KNN检索,技能栏里提都没提具体掌握程度,明显是“用过但不懂”的硬凑。 4. **教育背景和自我评价全是“无效信息垃圾”** GPA前10%这么好的牌,只列“Java程序设计”这种基础课,分布式、微服务这些后端核心课提都不提,白瞎了专业优势;自我评价那堆“积极认真、细心负责”,是从招聘网站抄的模板吧?没有任何和项目挂钩的具体事例,比如“解决过XX bug”“优化过XX性能”,纯废话,看完等于没看。 总结:这简历是“技术名词缝合怪+自我感动式凑数”,看着像“背了后端技术栈名词的应届生”,实则没干货、没重点、没可信度——面试官扫30秒就会丢一边,因为连“你能干嘛”都没说清楚。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

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