分而治之(重要)
“分而治之”是算法设计中的一种方法
它将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将结果合并以解决原来的问题
应用场景:归并排序、快速排序
leetcode:374、226、100、101
动态规划(重要)
“动态规划”是算法设计中的一种方法
它将一个问题分解为相互重叠的小问题,通过反复求解子问题,来解决原来的问题
应用场景:斐波那契数列、翻转二叉树
leetcode:70、198
贪心算法
“贪心算法”是算法设计中的一种方法
期盼通过每个阶段的局部最优选择,从而达到全局的最优
结果并不一定是最优
应用场景:零钱兑换、天龙八部-珍珑棋局
leetcode:455、122
回溯算法
“回溯算法”是算法设计中的一种方法
回溯算法是一种渐进式寻找并构建问题解决方式的策略
回溯算法会从一个可能的动作开始解决问题,如果不行,就回溯并选择另一个动作,直到将问题解决
应用场景:全排列
leetcode:46、78
总结
1、明白数据结构与算法的特点和应用场景
2、用JS实现一遍,再用第二第三语言实现一遍
3、学会分析时间/空间复杂度
4、提炼前端和算法的结合点,用于工作实战
5、多刷题,至少300道
6、多总结套路、模板
7、多阅读源码,比如React(dom树的操作)、Loadsh(扩展JS数据结构算法,集合的交集……)、V8(JS原生实现的算法)
8、多实战,将算法用于工作
题目
1、
1 | /* 实现,一个dot函数,将嵌套的对象结构转为非嵌套的对象 */ |