为什么有这么个网站?
# 为什么有这么个网站?
- 记录自己的刷题历程
- 按类型整理题目,使知识系统化
- 看会和写会是两个层次,所以在这里记录
- 如果有帮助到他人,更好。
# 以什么方式组织内容?
- 题目描述
- 时间复杂度和空间复杂度分析
- 思路的简要整理
- 代码实现(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)
# 刷题遇到困难怎么办?
- 迎难而上
- 掌握不熟悉的知识点, 系统化
- 多些,多练, 看别人的解题思路, 整理成自己的知识体系
# 数据结构的存储方式有哪些?
- 顺序存储和链式存储
# 数据结构的基本操作有哪些?
- 增
- 删
- 改
- 查
# 数据结构的遍历方式有哪些?
- 迭代 (for 循环 while 循环 或者数组特有的 forEach for of 等等)
- 递归
# 数据结构有哪些?
线性
- 数组
- 栈
- 队列
- 链表
非线形
- 树
- 图
- 堆(特殊的树 存储方式用数组表示)
# 有哪些常用的技巧?
- 分治
- 二分
- 贪心
- 动态规划
- 回溯
- 递归
# 先刷什么题?
- 先刷树!!! 先刷树!!!