算法笔记
Baymax_yan
C++,后台服务器,机器视觉,图像处理
展开
-
常用的算法思路
常用的算法思路1、O(1)时间内求区间和——前缀和算法2、O(1)时间内将区间相加同一个数——差分后再求前缀和3、双指针算法的使用条件是前一个指针随着后一个指针的变化而 单调变化,具有单调性4、求解一边满足某条性质一边不满足某条性质——二分查找5、 求自己最近的比第一个自己大或者小的数——单调栈6、滑动窗口的最大值、最小值——单调队列7、求权值为1的最短路问题——宽度优先搜索8、暴力搜索——深度优先搜索 + 剪肢9、合并集合以及查找在哪个集合——并查集10、 O(logn) 时间内求数原创 2021-01-21 01:01:22 · 393 阅读 · 0 评论 -
DFS-岛屿类问题解决思路
DFS-岛屿类问题解决思路常见的背包问题有1、岛屿个数与问题200. 岛屿数量2、岛屿面积问题695. 岛屿的最大面积3、包围问题130. 被围绕的区域1254. 统计封闭岛屿的数目核心模板–漫水填充算法/* 满水填充算法 */ int dx[4] = {0 , 0, 1, -1}; int dy[4] = {1 , -1, 0, 0}; int n; int m; int count; void dfs(vector<vector&原创 2020-12-03 23:59:22 · 288 阅读 · 0 评论 -
背包问题解题思路
背包问题解题思路常见的背包问题有1、组合问题377. 组合总和 Ⅳ494. 目标和518. 零钱兑换 II公式: dp[i]+=dp[i−num]dp[i] += dp[i-num]dp[i]+=dp[i−num]2、True、False问题139. 单词拆分416. 分割等和子集公式: dp[i]=dp[i]ordp[i−num]dp[i] = dp[i] or dp[i-num]dp[i]=dp[i]ordp[i−num]3、最大最小问题474. 一和零322. 零钱兑换公式原创 2020-12-01 23:09:28 · 506 阅读 · 0 评论 -
算法基础模板——DFS与BFS算法
算法基础模板——DFS与BFS算法1. DFS与BFS算法的比较 这两种算法一般都是解决树与图的遍历,主要的区别如下算法数据结构空间复杂度有无固定模板解决哪一类问题DFSstackO(h)无枚举所有的可能,一般有回溯与剪枝BFSqueueO(2^h)有有最短概念,最少的次数2.DFS DFS内有固定的模板,主要是思路,比较常见的问题...原创 2019-06-12 20:40:03 · 550 阅读 · 0 评论 -
基础算法模板——排序
基础算法模板——排序1. 快速排序void quick_sort(int q[], int l, int r){ if(l >= r) return ; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while(i < j){ do i++; while(q[i] <...原创 2019-06-08 13:28:35 · 168 阅读 · 0 评论 -
基础算法模板——前缀和与差分
基础算法模板——前缀和与差分1. 前缀和#include <iostream>using namespace std;const int N = 100010;int n, m;int a[N], s[N];int main(){ scanf("%d%d", &n, &m); for (int i = 1; i <= n; ...原创 2019-06-08 13:29:03 · 1325 阅读 · 2 评论 -
基础算法模板——高精度运算
基础算法模板——高精度运算1. 高精度加法vector<int> add(vector<int> &A, vector<int> &B){ if (A.size() < B.size()) return add(B, A); vector<int> C; int t = 0; for (i...原创 2019-06-08 13:29:25 · 415 阅读 · 0 评论 -
算法基础模板——位运算、双指针算法、离散化、区间合并
算法基础模板——位运算、双指针算法、离散化、区间合并1. 位运算求n的第k位数字:n>>k&1;返回n的最后一位1:lowbit(n) = n&-n;2. 双指针算法for (int i = 0, j = 0; i < n; i ++ ){while (j < i && check(i, j)) j ++ ; // 具体...原创 2019-06-08 13:32:02 · 331 阅读 · 1 评论 -
基础算法模板——数学知识
基础算法模板——数学知识更新中。。。1. 质数试除数法判定一个数是不是质数bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return t...原创 2019-06-25 20:24:55 · 220 阅读 · 1 评论 -
并查集算法笔记
并查集算法笔记定义并查集是一种用来管理元素分组情况的数据结构,并查集可以高效的进行如下操作查询元素a和元素b是否属于同一组合并元素a和元素b所在的组并查集结构使用树状结构来实现并查集支持的操作合并一个组的根指向另一个组的根连边,这样两棵树变成了一棵树,合并了两个组查询如果两个节点的根相同,就可以知道它们属于同一组。并查集实现中的注意在树形数据结构中,...原创 2019-05-20 09:50:00 · 260 阅读 · 1 评论 -
回溯算法之组合的和
回溯算法之组合的和算法原理 回溯法的基本思想是按照输入数组的顺序,每一层递归处理一个元素,当处理到最后一层的时候,也就是把数组中的所有元素都处理完的时候,把当前结果加入到最后的返回结果中。值得注意的是,每次在递归到下一层之前,我们加入了某个要处理的元素X,在下一层递归返回之后,我们要把之前加入的元素X从当前结果中取出来。如果我们不把元素X取出来,那么在下一次循环中,我们还会加入新的元素Y。那...原创 2019-05-14 20:50:57 · 281 阅读 · 0 评论 -
排序部分专题
各种排序思路总结/** * 冒泡排序 * 1 外层循环将排序好的除去 * 2 内层循环将没排好的数组进行前后比较大小,每经过一个循环,最大的数都在最后面 * 稳定排序,时间复杂度O(N2) * *//** * 选择排序 * 先找到第一个数后的最小值,并将其与之交换(内层循环为找到最小值) * 不稳定,O(N2) * *//** * 插入排序 * 1 外层循环...原创 2018-11-27 17:10:43 · 186 阅读 · 0 评论 -
基础算法模板——二分查找
二分查找算法1.算法思想假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。二分查找算法通常用于区间的一边满足某种性质,另一遍不满足某种性质,然后check(mid)判断mid是在某一边。2.算法模板模板一当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;,计算m...原创 2019-04-22 21:28:22 · 314 阅读 · 0 评论 -
单调栈算法笔记
单调栈算法笔记单调栈定义: 单调栈就是栈内元素递增或者单调递减的栈,并且只能在栈顶操作。单调栈的维护是O(n)的时间复杂度,所有元素只会进进栈一次性质:单调栈里面的元素具有单调性;元素加入栈前会把栈顶破坏单调性的元素删除;使用单调栈可以找到元素向左遍历的第一个比他小的元素(单增栈),也可以找到元素向左遍历第一个比他大的元素(单减栈);一般使用单调栈的题目具有以下的两点:离自己最...原创 2019-04-23 15:35:59 · 3595 阅读 · 0 评论 -
单调队列算法笔记
单调队列算法笔记单调队列定义: 单调队列顾名思义,就是具有单调性质和队列性质的数据结构,它可以从一边维护队列的单调性,也可以从两边维护队列的单调性(双端队列)。单调队列与单调栈(单调栈算法笔记)一样,只不过范围是在[l , r],单调栈做出来的题目单调队列也可以做。性质及用法:单调队列里面的元素具有单调性;元素加入队列前会把队列破坏单调性的元素移除队列;一般来说面对具有区间最优(最值...原创 2019-04-23 16:36:15 · 532 阅读 · 0 评论 -
排序算法笔记
排序算法笔记一些总结的比较好的博客1. 排序学习笔记2. 部分排序方法的整理各种排序思路总结冒泡排序1 外层循环将排序好的除去2 内层循环将没排好的数组进行前后比较大小,每经过一个循环,最大的数都在最后面稳定排序,时间复杂度O(N2)选择排序先找到第一个数后的最小值,并将其与之交换(内层循环为找到最小值)稳定,O(N2)插入排序1 外层循环是将排好续的数组保留2 内层循...原创 2019-04-25 09:08:33 · 130 阅读 · 0 评论 -
全排列问题
全排列问题含有重复数字的全排列问题算法1(回溯算法) O(n2)O(n^2)O(n2)由于有重复元素的存在,这道题的枚举顺序和 Permutations 不同。先将所有数从小到大排序,这样相同的数会排在一起;从左到右依次枚举每个数,每次将它放在一个空位上;对于相同数,我们人为定序,就可以避免重复计算:我们在dfs时记录一个额外的状态,记录上一个相同数存放的位置 start,我们在...原创 2019-04-30 17:16:18 · 168 阅读 · 0 评论