拼多多技术面试算法题
面试算法题
一面算法
经常会遇到后端传给我的是一个拍平的树结构,将这样的结构,转为树结构,可以用于类似cascader
例:
输入:
const data = https://www.it610.com/article/[
{
parent: 3,
id: 4,
value: 4,
},
{
parent: null,
id: 1,
value: 1,
},
{
parent: 1,
id: 2,
value: 2,
},
{
parent: 1,
id: 3,
value: 3,
}
];
输出:
[
{
id: 1,
value: 1,
children: [
{
id: 2,
value: 2,
},
{
id: 3,
value:3,
children: [
{
id: 4,
value: 4,
}
]
}
]
}
];
实现思路:
- 先找到根节点
- 再从根节点递归找其孩子
在一个一维坐标,给出一个目标线段,例如(3, 8)。一组源线段,例如(1, 2),(3, 4), (5, 8), (3, 6)。判断源线段组成的合集是否能完全覆盖目标线段,返回 true 或 false
输入:
const data = https://www.it610.com/article/[3, 8];
const source = [[1, 2], [3, 4], [5, 8], [3, 6]];
输出:
true
实现思路: 主要是如何将源线段合并
- 先将源线段根据起始点排序
- 再去遍历源线段,每次通过下一个线段的起点与当前终点比较,判断是否又交集,如果有,则合并,如果没有,说明是分开的线段
- 遍历合并后的源线段,判断是否完全包含目标线段
合并两个有序数组,并逆序。
作答: 参考leet code 88 题
总结 【拼多多技术面试算法题】一面算法题,和三面算法题很快就写出来了,二面的算法题,也是让面试官给了些提示才堪堪写出来。
在面试过程中,遇到算法题,不要慌张。下面几步帮你搞定算法:
- 首先搞清楚题目的含义,确定输入输出。和面试官确认题目理解没有错
- 整理自己的思路,向面试官讲解一下,思路大体没有问题,再开始编码
- 即使没有思路,也不要心慌,或者就不做了,可以笑着让面试官给点提示
- 按照提示思考,再重复步骤2
- 编码与运行,总结分析时间复杂度与空间复杂度
推荐阅读
- 多多和珍珍的故事
- 字符串拼接成段落,换行符(\n)如何只执行n-1次
- GIS跨界融合赋能多领域技术升级,江淮大地新应用成果喜人
- 深入浅出谈一下有关分布式消息技术(Kafka)
- 21天|21天|羊多多组合《书都不会读,你还想成功》
- 多多可爱
- 同学聚会少了友情多了比拼,拼孩子、拼工作、比职位引发各种落差|同学聚会少了友情多了比拼,拼孩子、拼工作、比职位引发各种落差 变味的同学聚会
- 给史多多的第一百五十八封信
- 2月2日日课总结(基因技术)
- NAT(网络地址转换技术)