力扣刷题心得_JAVA
数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 > 栈 > 队列 > 树
//一般力扣中传入的参数和新建的对象作为返回值,都不列入空间复杂度中
//但是面试的时候要和面试官商量好,灵活定义空间复杂度
//当然最好是就在传入的对象作为返回值,(在原对象上改,没这种方法就没办法了)
2字节是65535
文章目录
- 数组
- 方法API
- 针对int或integer
- 链表
- 字符串
- KMP模式匹配算法
- 哈希表
- 双指针
- 递归
- 栈
- 队列
- 树
- 广度优先搜索(BFS)和深度优先搜索(DFS)
数组
方法API
针对int或integer
Math.abs() //获取绝对值
Math.pow(a,b)//获取平方值a为值,b为幂次
链表
字符串
KMP模式匹配算法
- 关键点,好马不吃回头草,磨刀不误砍柴功
- 匹配串建立代表各位置情况的next数组
建立原则,前缀后缀匹配
哈希表
双指针
递归
栈
队列
树
广度优先搜索(BFS)和深度优先搜索(DFS)
- 像树前中后序遍历都是深度优先搜索
深度优先搜索一般结合栈作为工具
二叉树的前中后序遍历可以用迭代遍历\递归遍历\统一迭代法遍历
无论是迭代遍历还是递归遍历都是用的栈的思想
迭代遍历使用的栈存数据
递归遍历使用的栈运行程序,每调用一次递归函数就入栈一个栈帧
可以说递归就是在逻辑和在jvm虚拟机层面上用的栈 - 层序遍历是广度优先搜索
广度优先搜索一般结合队列实现
用链表也可以,但是逻辑上太麻烦了,而队列就是以链表为基础,特殊的链表,实现特殊的功能,有队列为什么不用呢