代码随想录笔记
数组
key:数组在内存中的存储方式
二维数组
链表
在内存中可不是连续分布-散乱分布在内存中的某地址上,通过指针域的指针链接在内存中各个节点。
哈希表
哈希表是:根据关键码的值/数组索引而直接进行访问的数据结构。
哈希表常用于:快速判断一个元素是否出现集合里
可选数据结构:
- 数组易判断相等--限制数值大小(不至于过分浪费空间)、
- set (集合)---把数值映射到key上都要做hash计算的 比数组慢、
- map(映射)不方便判断相等
回溯算法
都可以抽象为树形结构!高度有限的树(N叉树)!
都是在集合中递归查找子集,集合的大小就构成了树的宽度;递归的深度,都构成的树的深度。
回溯函数也就是递归函数,回溯是递归的副产品
本质:穷举
组合与排列:组合是不强调元素顺序的-无序,排列是强调元素顺序-有序。
回溯算法模板
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
}