一、数据结构
1、数组
1) 创建数组:
2) 添加、删除元素
3) 多维数组
4). 数组方法
- 关于 valueOf(), typeof(), instanceof
var arr = [1,2,3];//数组的valueOf()全等于自身
类型 | arr | arr.valueOf()
—|—|—
typeof() | object | object
instanceof Object | true | true
instanceof Array | true | true
var bool = false; //全等
类型 | bool | bool.valueOf()
—|—|—
typeof() | boolean | boolean
instanceof Object | false | false
instanceof Boolean | false | false
var newBool = new Boolean(false); //相等不全等
类型 | newBool | newBool.valueOf()
—|—|—
typeof() | object | boolean
instanceof Object | true | false
instanceof Boolean | true | false
因为newBool是用Boolean new出来的,Boolean继承自Object
2、栈
|
|
3、队列
|
|
4、链表
|
|
5、集合
|
|
6、字典和散列表
字典
|
|
散列表
|
|
7、树
|
|
8、图
- 几个术语:度,路径,简单路径(不包含重复定点),环,连通图(图中每两个顶点之间都存在路径),有向图,无向图,强连通图(图中没量个顶点之间在双向上都存在路径)
- 图的表示:邻接矩阵,邻接表,关联矩阵
|
|
单源正权值的最短路径问题:dijkstra算法。计算一个节点到其他所有节点的最短路径
二、排序算法
|
|
三、查找算法
|
|
四、动态规划
能用动态规划解决的著名问题:
- 背包问题
- 最长公共子序列
- 矩阵链相乘
- 硬币找零
动态规划:将复杂问题分解成更小的相互依赖的子问题(不同于分而治之:分解成相互独立的子问题)