概述
这是几种比较基础的数据结构,js提供了大部分直接使用的api。
数组和字符串
数组是使用连续内存存储的数据结构,稍微复杂的就是二维数组,比如对角线遍历。
字符串可以看成是utf-16字符组成的数组,只是字符串是不可变的,最大长度也有所不同。
但做题思路不会差太多,或者可以将字符串转化为数组再解题。
队列和栈
队列和栈可以理解为数组的不同使用方式,即先进先出的数组可以理解为队列,先进后出的理解为栈。
实际的问题中,数组元素增删的方式多样,以上只是其中两种。
除了简单的队列栈外,还有一些变体
- 单调栈,维持栈内值的单调递增(递减)性,在整体 O(n) 的时间内处理需要大小比较的问题,比如每日温度
- 优先队列,可以在 O(1)时间内获得最大值,并且可以在 O(log n) 时间内取出最大值或插入任意值。js中没有提供原生的优先队列,一般使用堆来实现。