摘要: Union-Find 并查集算法 参考labuladong的文章 动态连通性其实可以抽象成给一幅图连线,如图: Union-Find 算法主要需要实现这两个 API: class UF { /* 将 p 和 q 连接 */ public void union(int p, int q); /* 判断 阅读全文
posted @ 2021-07-17 09:59 RealGang 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 参考文章:https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html String类型的常量池的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是用双引号声明的 阅读全文
posted @ 2021-07-07 10:10 RealGang 阅读(57) 评论(0) 推荐(0) 编辑
摘要: java常见API 更详细的可以参考文章蓝桥杯知识点汇总:基础知识和常用算法 拷贝数组 Arrays.copyOf() int[] numsCopy = (int[]) Arrays.copyOf(nums,nums.length); list初始化一些数据 Arrays.asList() 数组批量 阅读全文
posted @ 2021-07-02 15:41 RealGang 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 本文会从递归反转整个单链表开始拓展 递归反转整个链表 先直接看实现代码: ListNode reverse(ListNode head) { if (head.next == null) return head; ListNode last = reverse(head.next); head.ne 阅读全文
posted @ 2021-06-17 20:30 RealGang 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 快速排序就是个二叉树的前序遍历,归并排序就是个二叉树的后序遍历 简单分析一下他们的算法思想和代码框架: 快速排序的逻辑是,若要对 nums[lo..hi] 进行排序,我们先找一个分界点 p,通过交换元素使得 nums[lo..p-1] 都小于等于 nums[p],且 nums[p+1..hi] 都大 阅读全文
posted @ 2021-06-17 19:33 RealGang 阅读(120) 评论(5) 推荐(1) 编辑
摘要: 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 遇到任何递归型的问题,无非就是灵魂三问: 1、这个函数是干嘛的? 情况 1,如果p和q都在以root为根的树中,函数返回的即使p和q的最近公共祖先节点。 情况 2,那如果p和q都不在以root为根的树中怎么办呢?函数理所 阅读全文
posted @ 2021-06-16 22:00 RealGang 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 前序遍历框架如下: void traverse(TreeNode root) { if (root == null) return; // 前序遍历的代码 traverse(root.left); traverse(root.right); } 后序遍历的代码框架: void traverse(Tr 阅读全文
posted @ 2021-06-16 15:38 RealGang 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 原型模式 适用场景: 原型模式主要解决的问题就是创建重复对象,⽽而这部分 对象 内容本身⽐比较复杂,生成过程可能从库或者 RPC接口中获取数据的耗时较长,因此采⽤用克隆的方式节省时间。 原型模式主要解决的问题就是创建⼤大量量重复的类, 案例:实现一个上机考试抽题的服务,因此在这里建造一个题库题目的场 阅读全文
posted @ 2021-06-15 23:09 RealGang 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树的升序输出或者升序查找第k个元素之类的问题可以依靠中序遍历,BST 相关的问题,要么利用 BST 左小右大的特性提升算法效率,要么利用中序遍历的特性满足题目的要求 如果当前节点会对下面的子节点有整体影响,可以通过辅助函数增长参数列表,借助参数传递信息。 在二叉树递归框架之上,扩展出一套 B 阅读全文
posted @ 2021-06-10 20:28 RealGang 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 设计模式-建造者模式 阅读全文
posted @ 2021-04-27 16:42 RealGang 阅读(50) 评论(0) 推荐(0) 编辑