继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

丶这是一个点
关注TA
已关注
手记 60
粉丝 1
获赞 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 实现数字千分位格式化。今天学习就先到这里吧。

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

http://img3.mukewang.com/635e32b900019cad25231353.jpg

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP