猿辅导2020校招面试题
——深度学习算法工程师
——2019年8月13日星期二
一面(两道编程题)
1、列表加和
给定一个int类型的列表(如[1, 9, 8, 8])和一个加和元素(如34),计算列表元素所组成的数字(1988)与加和元素相加后的结果(1988+34=2022,此处仅作为讲解示例,实际操作中不允许这样执行),并以列表的形式输出([2, 0, 2, 2])。
要求:
必须是在列表状态下进行操作,不能将列表中的元素重组为一个整数(如1988)与加和元素进行计算。
解题思路:
将加和元素拆分成列表,然后从后往前,按照加法计算公式,与列表中的元素对应相加,若大于等于10则进1,并将大于10的部分存储在结果列表中。
这样,将结果列表逆序输出即可。
2、求树的直径
给定一棵二叉树,请找出其最长路径,并输出路径上的边的数量。如下所示,第一棵树的最长路径为4-2-1-3,长度为3。第二棵树的最长路径为8-6-4-2-5-7-9,长度为6。
解题思路:
遍历所有父节点,统计其左右孩子的数量,并相加,即为该父节点对应的路径长度。依次递归调用即可。
其中需要注意的是,每一次遍历子节点,返回数值给父节点的时候,需要加1(对于父节点而言,自己本身也是其子节点的一个);并且,因为是统计路径,所以对于同时含有左右子节点的节点,要返回左右子节点中的最长路径,而不是该节点所包含的路径。
参考链接:
(1)猿辅导面试-算法类
全部评论
(2) 回帖