算法学习
数据结构
- 数据结构在物理上分为连续和分散结构,在逻辑上分为线性和非线性结构
数组
初始化数组
1 | // 初始化长度为5的数组,并填充0 |
访问数组元素
1 | // 访问随机元素 |
插入数组元素
1 | // 元素后移动 |
删除元素
1 | let array = [1, 2, 3, 4, 5, 6, 7, 8]; |
遍历数组
1 | // 遍历数组 |
查找元素
1 | // 查找元素 |
链表
链表结构
1 | class ListNode { |
初始化链表
1 | let node = new ListNode(); |
插入节点
1 | function insert(p0, val) { |
删除节点
1 | // 删除no之后的首个节点 |
查找节点
1 | function find(head, target) { |
栈
栈的特点及其简单实现
1 | // 先进先出 |
链表实现栈
1 | class LinkedListStack { |
数组实现栈
1 | class ArrayStack { |
队列
- 先进先出
初始化队列
1 | const queue = []; |
链表实现队列
1 | class Queue { |
数组实现队列
1 | class ArrayQueue { |
双向队列
初始化双向队列
1 | const deque = []; |
链表实现双向队列
1 | class ListNode { |
数组实现双向队列
1 | class ArrayDeque { |
哈希表
哈希表常用操作
1 | let map = new Map(); |
哈希表简单实现
1 | class Pair { |
哈希冲突与扩容
- 对于下面两个
key来说,通过hash函数处理后的key值是相同的就出现了hash冲突
1 | 1136 % 100 |
- 负载因子是哈希表的一个重要概念,其定义为哈希表的数量除以桶的数量,用于衡量哈希冲突的严重程度,也常被作为哈希表扩容的触发条件
哈希冲突的几种解决方案
- 链式寻址
- 开放寻址
- 平方探测
- 多次哈希
1 | // 链式寻址 |
评论
TwikooWaline
