手记

【九月打卡】第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 的两个数了。今天学习就先到这里吧。

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

​​

0人推荐
随时随地看视频
慕课网APP