为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第7天 前端面试技能拼图1

标签:
面试

课程名称: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 实现数字千分位格式化。今天学习就先到这里吧。

坚持打卡,坚持学习,未来可期,加油😀~

https://img1.sycdn.imooc.com//635e32b900019cad25231353.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消