课程名称:2周刷完100道前端优质面试真题
课程章节:第3章 前端面试技能拼图1: 数据结构和算法(下),大厂面试必考
主讲老师:双越
课程内容:
今天学习的内容包括:
3-15 -获取1-10000之前所有的对称数(回文数)-代码演示和单元测试——使用反转比较、头尾比较、生成翻转数获取所有的对称数。
3-16 -获取1-10000之前所有的对称数(回文数)-性能分析——操作数字性能最好,其次是字符串。
课程收获:
对称数
- 求1-10000之间的所有对称数(回文)
- 例如∶0,1,2,11,22,101,232,1221
思路1–使用数组反转、比较
- 数字转换为字符串,再转换为数组
- 数组reverse ,再join为字符串
- 前后字符串进行对比
思路2-字符串头尾比较
- 数字转换为字符串
- 字符串头尾字符比较
- (也可以用栈,像括号匹配,但要注意奇偶数)
思路3–生成翻转数
- 使用%和Math.floor 生成反转数
- 前后数字进行对比
- (全程操作数字,没有字符串类型)
性能分析
- 思路1–看似是O(n),但数组转换、操作都需要时间,所以慢
- 思路2 vs思路3,操作数字更快(电脑原型就是计算器)
- 思路2要用栈,不合适。因为栈也一般用数组实现,会慢
划重点
- 尽量不要转换数据结构,尤其数组这种有序结构
- 尽量不要用内置 API,如reverse ,不好识别复杂度
- 数字操作最快,其次是字符串
今天的 学习了 获取1-10000之前所有的对称数(回文数),使用了三种方法,知道了数字操作最快,其次是字符串,数组及内置API操作等不建议。
下一步就是 学习 如何实现高效的英文单词前缀匹配。今天学习就先到这里吧。
坚持打卡,坚持学习,未来可期,加油😀~