
算法模板
saber@p
星辰滚烫不如麻辣烫
展开
-
前缀和 (一维 和 二维)
什么是前缀和 现在有一个场景,不断的需要我们去计算出数组中 [l , r] 范围的总和 ,常规的处理是每次都去一个一个累加,这样时间复杂度是O(n), 这样显然还是太慢了 下面我们通过记录 前1,前2 … 前n个 元素的和 ,S1,S2…Sn,先对数据进行预处理,接下来对于求 [l,r]的和 我们只需要Sr - Sl -1 时间复杂度是O(1),性能显著的提升 一维数组前缀和 现在用代码进行实现 /** * 一维实现 */ public void oneDimension原创 2021-04-01 20:05:13 · 207 阅读 · 0 评论 -
回溯算法的模板
public class Backtrack { public void backtracking (/*参数*/) { /* 定义两个成员变量 一个收集满足要求的 结果 一个收集 作为中途尝试的值,进行回退 */ /* if (终止条件) { 存放结果 终止本层循环 return; } 遍历本层原创 2021-03-30 11:05:29 · 257 阅读 · 0 评论 -
递归的实现套路
递归的题目呢,有时候就能一眼看出来,难的又搞不出来,全靠玄学,其实不然,只要按着步骤走就可以实现 第一步、根据题目现在纸上 画出 递归的状态树 根绝状态树 明确三个点 /** * 根绝状态树 明确三个点 * 1、确定递归的参数 和 返回值 * 根据当层节点 确定参数, 根据 当层节点 和 上一层之间的关系 确定返回值 * 2、确定递归的中止条件 * 看状态树遍历到最底层是什么 就是中止条件 * 3、确定单层的逻辑原创 2021-03-30 10:04:15 · 151 阅读 · 1 评论 -
并查集的实现模板
在题目中,如果是求 对什么合并,或者是图的连通区域的个数之类的,应该考虑使用并查集 下面我总结出一个并查集的模板 package 图论.并查集; import java.util.Arrays; /** * 并查集的实现 */ public class UF_Tree { /** * 根据顶点创建一个数组 * 数组索引对应顶点 值对应他的父节点 */ private int[] eleAndGroup; //计算并查集中分组的个数 pr原创 2021-03-29 13:22:31 · 157 阅读 · 0 评论 -
图中两种搜索方式的模板
很多题目,需要我们 根据题意构建出图来,进行搜索 这时候,有两种搜索的模板,这里我都是采用二维数组来构建图 深度优先搜索 /** * 深度优先搜索的模板 * 数组构建的图 */ public class ArrayDFS { //根据题意构建有向图 int[][] edges; //标记顶点是否被搜索过 boolean[] marked; /** * 传入一个n * n 的题意矩阵来初始化图 * * @param arr原创 2021-03-29 10:23:15 · 184 阅读 · 0 评论 -
拓扑排序的两种实现模板
由于近期去笔试,发现时间特别赶,如果平时刷题 没有总结出模板 那么在笔试中 看了题你会写 但是总会这里错 那里错原创 2021-03-28 21:22:20 · 311 阅读 · 0 评论