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

【九月打卡】第17天 前端面试技能拼图1

标签:
面试

课程名称:2周刷完100道前端优质面试真题
课程章节:第2章 前端面试技能拼图1 :数据结构和算法(上),大厂面试必考
主讲老师:双越

课程内容:

今天学习的内容包括:
2-18 找出一个数组中和为 n 的两个数-嵌套循环不是最优解——经过两层for循环后,耗时会跟着数量级的增加成指数增长,时间复杂度为O(n^2),不可用的算法。
2-19 找出一个数组中和为 n 的两个数-双指针的思路——介绍了理由有序处理查找,利用双指针采用二分思想实现。
2-20 找出一个数组中和为 n 的两个数-双指针的代码演示——双指针就是定义两个遍历,协助我们解决问题。

课程收获:

找出一个数组中和为 n 的两个数

给一个数组,找出其中和为n的两个元素
  • 有一个递增的数组[1,2,4,7,11,15]和一个n = 15。
  • 数组中有两个数,和是n。即4+11 === 15。
  • 写一个JS函数,找出这两个数。
常规思路
  • 嵌套循环,找到一个数,然后去遍历下一个数,求和,判断
  • 时间复杂度是O(n^2),不可用
利用递增(有序)的特性
  • 随便找两个数
  • 如果和大于n,则需要向前寻找
  • 如果和小鱼n,则需要向后寻找 —— 二分法(二分思想指导,并非二分法)
双指针,时间复杂度降低到O(n)
  • 定义i指向头,j指向尾,求arr[i] + arr[j]
  • 如果大于n,则j需要向前移动
  • 如果小于n,则i需要向后移动
划重点
  • 时间复杂度达到O(n^2),是不可用的算法
  • 凡有序,必二分!!!
  • 优化嵌套循环,可以考虑"双指针"

今天的 学习了 找出一个数组中和为 n 的两个数,课程通过循环嵌套和双指针实现查找,两种方法随着查找数组的数量增长,循环嵌套方法耗时成指数增长,不可用,双指针方法耗时基本无变化,故算法需要好好思考好好学。

下一步就是 学习 找出一个数组中和为 n 的两个数了。今天学习就先到这里吧。

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

​​https://img1.sycdn.imooc.com//632ad36a00016a1e27451558.jpg

https://img1.sycdn.imooc.com//632ad9b40001bf4426991550.jpg

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消