为什么有这么个网站?

# 为什么有这么个网站?

  • 记录自己的刷题历程
  • 按类型整理题目,使知识系统化
  • 看会和写会是两个层次,所以在这里记录
  • 如果有帮助到他人,更好。

# 以什么方式组织内容?

  • 题目描述
  • 时间复杂度和空间复杂度分析
  • 思路的简要整理
  • 代码实现(JS 版本)

# 如何学习算法?

  • 程序 = 数据结构 + 算法
  • 数据结构 :数据之间以什么样的方式存储(逻辑结构和物理结构)
  • 逻辑结构 : 线性的? 还是非线形的
  • 物理结构: 内存是否连续
  • 算法 : 求 1 到 100 的和 ? 方法 1. 可以从 1 依次加到 100 方法 2. 可以直接使用公式 ( n *( n+1) )/2 n =100

# 如何评价算法的好坏?

从下面这两个方面分析 大 O 表示法 只看最高位的那一项 其他常数可以省略

  • 时间复杂度
  • 空间复杂度

# 时间复杂度有哪些?

  • O(n)
  • O(n^2)
  • O(n^3)
  • O(logN)
  • O(1) 最优

# 空间复杂度有哪些?

  • O(N)
  • O(1) 最优 (实际上就是使用多个变量 也叫多指针 two pointers three pointers)

# 刷题遇到困难怎么办?

    1. 迎难而上
    1. 掌握不熟悉的知识点, 系统化
    1. 多些,多练, 看别人的解题思路, 整理成自己的知识体系

# 数据结构的存储方式有哪些?

  • 顺序存储和链式存储

# 数据结构的基本操作有哪些?

# 数据结构的遍历方式有哪些?

  1. 迭代 (for 循环 while 循环 或者数组特有的 forEach for of 等等)
  2. 递归

# 数据结构有哪些?

  • 线性

    • 数组
    • 队列
    • 链表
  • 非线形

    • 堆(特殊的树 存储方式用数组表示)

# 有哪些常用的技巧?

  • 分治
  • 二分
  • 贪心
  • 动态规划
  • 回溯
  • 递归

# 先刷什么题?

  • 先刷树!!! 先刷树!!!