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