课程名称:2周刷完100道前端优质面试真题
课程章节:第3章 前端面试技能拼图1: 数据结构和算法(下),大厂面试必考
主讲老师:双越
课程内容:
今天学习的内容包括:
3-17 -如何实现高效的英文单词前缀匹配——使用哈希转变成tree结构实现高效的英文单词匹配操作。
课程收获:
高效的字符串前缀匹配
- 有一个英文单词库(数组),里面有几十万个英文单词
- 输入一个字符串,快速判断是不是某一个单词的前缀
- (说明思路,不用写代码)
常规思路
- 第一,遍历单词库数组
- 第二,indexOf 判断前缀
- 实际时间复杂度超过了O(n),因为要考虑indexOf的计算量
优化
- 英文字母一共26个,可以提前把单词库数组拆分为26个
- 既然第一层拆分为26个,第二层、第三层,还可以继续拆分
- 最后把单词库拆分为一棵树
性能分析
- 如遍历数组,时间复杂度至少O(n)起步( n是数组长度)
- 而改为树,时间复杂度降低到O(m)( m是单词的长度)
- PS:哈希表(对象)通过key查询,时间复杂度是O(1)
划重点
- 考虑优化原始数据结构(需和面试官沟通确认)
- 有明确范围的数据(如26个英文字母),考虑使用哈希表(对象)
- 以空间换时间,定义数据结构最重要
今天的 学习了 如何实现高效的英文单词前缀匹配,使用数组的方式时间复杂度是O(n),但是如果改成tree模式时间复杂度为O(m),m为英文单词长度。
下一步就是 学习 用 JS 实现数字千分位格式化。今天学习就先到这里吧。
坚持打卡,坚持学习,未来可期,加油😀~