摘要: 一、快、慢指针的常用算法 快、慢指针 一般会 初始化 链表头节点head ,前进时 快指针 fast 在前面,慢指针 slow 在后,可以巧妙解决一些 链表中的问题 1.判断链表中是否有环?(LeetCode 141题 难度:简单 ) 如果有环的话,快指针必定超越慢指针 一圈, 然后相交。 如果没有 阅读全文
posted @ 2021-07-04 18:38 宋佳强 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 广度优先搜索(BFS、队列) 思路:利用队列的“先进先出”的性质,将 根节点的 两个节点 放入队列, 然后 左节点出队列 ,并且将 左节点的 子节点 加入队列,完成之后 右节点出队列,将右节点的子节点 加入队列 ,以此类推 。 算法框架 // 计算从起点 start 到终点 target 的最近距离 阅读全文
posted @ 2021-07-04 18:37 宋佳强 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 回溯算法 回溯算法 实际上 就是暴力破解(穷举) 解决一个回溯问题:实际上就是解决一个 决策树 的遍历过程,考虑一下三点 1.路径:也就是要做出的选择 2.选择列表:也就是你 当前可以做的选择 3.结束条件:也就是到达决策树的 底层,做的操作,return 回溯代码框架 result = [] de 阅读全文
posted @ 2021-07-04 18:36 宋佳强 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 一、运行时数据区 红色区(2个):一个进程对应一份,多线程 共享的 一个进程(多线程)共享,方法区(堆外内存、Method Area)和堆空间(Heap) 灰色区(2个):一个线程对应一份,单线程 私有的 一个线程一份 程序技术器(PCS)、本地方法栈(NMS)、虚拟机栈(VMS) 95%的垃圾回收 阅读全文
posted @ 2021-07-04 18:04 宋佳强 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 一、内存图总体 二、类加载子系统 2.1 类加载子系统三个环节:加载,链接、初始化 补充 _反编译 指令 : javap -v xxx.class 将 .class 文件加载到内存的三个环节: 加载 链接 初始化 ClassLoader 只负责 加载 calss文件 ,至于能不能执行 ,由 执行引擎 阅读全文
posted @ 2021-07-04 18:03 宋佳强 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 动态规划(dp) 首先:动态规划问题一般的形式就是 求 最值 解 动态规划的核心问题 就是 穷举 然后:动态规划穷举有点特别,因为这类问题存在 “重叠子问题” ,如果暴力穷举,效率会低下,所以需要借助备忘录“ dp table”来优化穷举过程,避免不必要的计算 然后:动态规划 一般 会具备 “最优子 阅读全文
posted @ 2021-07-03 22:37 宋佳强 阅读(249) 评论(0) 推荐(0) 编辑