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