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

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

标签:
面试

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

课程内容:

今天学习的内容包括:
3-7 【连环问】青蛙跳台阶有几种方式——用动态规划分析和解决问题,用递归思考问题,用循环解决问题。
3-8 移动 0 到数组的末尾-splice 会导致性能问题——使用循环在原数组中将0移动到数组尾部。

课程收获:

青蛙跳台阶

题解
  • 一只青蛙,一次可跳1级,也可跳2级
  • 问:青蛙跳到n级台阶,总共有多少种方式?
用动态规划分析问题
  • 要跳到1级台阶,就1种方式t(1)=1
  • 要跳到2级台阶,就⒉种方式t(2)=2
  • 要跳到n级台阶: f(n) = f(n - 1) + f(n - 2)

移动 0 到数组的末尾

题解
  • 如输入[1,0,3,0,11,0],输出[1,3,11,0,0,0]
  • 只移动0,其他顺序不变
  • 必须在原数组进行操作
如果不限制“必须在原数组操作”
  • 定义part1 part2两个数组
  • 遍历数组,非0 push 到part1 , 0 push 到part2
  • 返回part1.concat(part2)
传统思路
  • 遍历数组,遇到О则 push 到数组末尾
  • 用splice截取掉当前元素
  • 时间复杂度是O(n^2)——算法不可用
 for (let i = 0; i < length - zeroLength; i++) {
     if (arr[i] === 0) {
         arr.push(0)
         arr.splice(i, 1) 
         i-- 
         zeroLength++ 
     }
 }
tips
  • 自己要有独立思考的能力
  • 要能够对时间复杂度,空间复杂度有一定的敏锐性

今天的 学习了 青蛙跳台阶和移动 0 到数组的末尾,使用了循环和splice进行处理,时间复杂度为O(n^2),是不可用的,数组较大时,耗时非常久,会导致程序崩溃。

下一步就是 学习 使用双指针来实现 移动 0 到数组的末尾。今天学习就先到这里吧。

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

​​​https://img1.sycdn.imooc.com//63306e9300011dda25361350.jpg

https://img1.sycdn.imooc.com//63307027000177b725481363.jpg

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消