Skip to content

Ai01/javascriptAlo

Repository files navigation

javascript 算法实现

总结

  • 解决算法问题,如果有规律就利用规律缩小范围,如果没有规律就利用空间去优化时间。
  • 有规律那么会用到二分法,滑动窗口,动态规划等
  • 如果没有规律那么利用递归,数据结构(空间换时间)等
  • 对于一些无法实现的公式,可以使用逼近原则(二分法,贪心之类)

如何找规律

  • 查看题目中的关键字眼:顺序,数据结构
  • 列举n为0,1,2,3的情况。然后观察
  • 数学题多数是公式和递归还有二分法

双指针

  • 数组有顺序用双指针(二分法)。二分法从两边
  • 字符串的双指针(滑动窗口)。第一个指针先移动n步,第二个指针在移动,可以避免多次遍历
  • 链表的双指针(滑动窗口)第一个指针先移动n步,第二个指针在移动,可以避免多次遍历
  • 双指针的使用分为二分法,滑动窗口,指针交换等。有顺序使用二分法。滑动窗口如何滑动需要根据具体的问题来决定。

数据结构

  • 栈利用先入后出,可以判断是否合法,利用栈可以实现对特殊数据结构的遍历
  • 链表基本都是使用双指针
  • 队列先入先出
  • 看到树就应该想到递归,队列,遍历

递归

  • 不是只有树的数据结构可以递归。所有过程为树的运算过程都可以递归

要求

  1. 学习算法要注意的是算法的复杂度,算法的实现原理,实现思想。要学会举一反一。不要为了学习而学习。
  2. 要把学习代码的参考资料放如对应的文档中
  3. 每一个算法要有对应的学习文档

About

javascript 算法实现

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published