算法
Prince_H_23
这个作者很懒,什么都没留下…
展开
-
算法-16 拓展的算法
博弈论快速选择75 颜色分类 不变量的概念https://selfboot.cn/2016/09/01/lost_partition/剑指39 40解决topk问题摩尔投票229. 求众数 II约瑟夫环剑指62俄罗斯农民乘法CSDN模板来源int quickMulti(int A, int B) { int ans = 0; for ( ; B; B >>= 1) { if (B & 1) {原创 2021-12-27 21:20:09 · 225 阅读 · 0 评论 -
算法-15 搜索
2059. 转化数字的最小运算数407.接雨水 IIDFSBFSA*IDA*原创 2021-12-27 21:19:38 · 141 阅读 · 0 评论 -
算法-14 分治法
寻找两个正序数组的中位数最大子序和原创 2021-12-27 21:18:59 · 73 阅读 · 0 评论 -
算法-13 动态规划
动态规划确定dp数组及其下标含义确定递推公式dp数组初始化确定遍历顺序举例推导dp数组递归改动态规划,有几个可变参数决定你维护的dp数组是几维数组状态表示 集合(所有选法、条件)状态计算 集合划分一些文章linkAcWing算法基础课分类记忆化搜索(答案一定要是return值才记忆化搜索,不能参数是答案返回值在是void用)int dp[N][N][N] ;int dfs(int a, int b, int c){ if(越界/不符合条件) return原创 2021-12-27 21:18:29 · 118 阅读 · 0 评论 -
算法-12 贪心算法
原创 2021-12-27 21:17:51 · 58 阅读 · 0 评论 -
算法-11 回溯
注意点参数能加引用就加引用,不能就用全局变量,要不然递归一次拷贝一次数据2096. 从二叉树一个节点到另一个节点每一步的方向模板void backtracking(参数){ if(终止条件){ //存放结果 return; } for(遍历本层){ //处理节点 //递归回溯 //撤销回溯 }}去重、选择每个元素只能用一次加startIndex,去重用used[]如果要对树层原创 2021-12-27 18:49:46 · 60 阅读 · 0 评论 -
算法-10 字符串算法
记在最前处理""BF算法BF/RK/BM图解暴力匹配void BF(string T, string P){ if(P.size() == 0) return 0; int n = T.size(); int m = P.size(); int l1 = 0; int l2 = 0; while(l1 < n){ if(T[l1] == P[l2]){ l1++; l2++原创 2021-12-25 11:35:48 · 333 阅读 · 0 评论 -
算法-9 递归、迭代
递归函数自己调用自己迭代A不停的调用B区别递归中一定有迭代,但是迭代中不一定有递归题目剑指offer 24题原创 2021-12-25 11:35:17 · 243 阅读 · 0 评论 -
算法-8 双指针、滑动窗口
双指针逆向双指针:88.合并两个有序数组快慢双指针:234.回文链表对撞双指针:滑动窗口(双指针)labuladongint left = 0, right = 0;while(right < s.size()){ char c = s[right]; //窗口更更新 right++; while(window needs shrink){ char d = s[left]; //窗口内更新 lef原创 2021-12-25 11:34:10 · 148 阅读 · 0 评论 -
算法-7 十大排序
概括稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。冒泡排序一点一点移动,最大的放在最后vector<int> insertionSort(vector<int> arr){原创 2021-12-25 11:33:39 · 89 阅读 · 0 评论 -
算法-6 高精度
高精度大整数存储:用字符串读,用vector存(小端)A+B 10^6算每一位的和放到vector中当前位 %10,进位 /10最后要处理是否还有进位// C = A + B, A >= 0, B >= 0vector<int> add(vector<int> &A, vector<int> &B){ if (A.size() < B.size()) return add(B, A); vecto原创 2021-12-25 11:32:55 · 215 阅读 · 0 评论 -
算法-5 二分
一些参考文章GTAlgorithm极客时间https://blog.csdn.net/qq_41221520/article/details/108277801两种模板、几点区分两种情况闭区间<=mid + 1, mid - 1;int binarySearch(vector<int> nums, int target){ //闭区间[] int left = 0; int right = nums.size() - 1;原创 2021-12-25 11:32:05 · 84 阅读 · 0 评论 -
算法-4 数学
辗转相除法(欧几里得算法)作用 求最大公约数(gcd)int gcd(int a, int b){ if(b == 0) return a; return gcd(b, a % b)}扩展欧几里得算法素数判定bool isPrime(int n){ for(int i = 2; i * i <= n; i++){ if(n % i == 0) return false; } return n != 1;}埃式筛选(求n以内原创 2021-12-25 11:31:22 · 177 阅读 · 0 评论 -
算法-3 区间求和
整体数组不变,区间查询:前缀和、树状数组、线段树;数组单点修改,区间查询:树状数组、线段树;数组区间修改,单点查询:差分、线段树;数组区间修改,区间查询:线段树1 前缀和下标从1开始,好处理边界问题一维前缀和sum[i] = sum[i-1] + a[i]二维前缀和sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + matrix[i - 1][j - 1];2 差分一维差分在区间[l,r]中让数列都增加C原创 2021-12-25 11:30:54 · 440 阅读 · 0 评论 -
算法-2 位运算
n & (n - 1) 去掉最低位的1(191、231)a ^ a = 0(136)(a * b) % k = (a % k)(b % k) % k(372)参考文章公众号:数据结构与算法CSDN博客CSDN博客常见运算符&&: A && B,A为真,不执行B (剑指64)||: A || B, A为假,不执行B&:按位与。|:按位或。~:按位非。 ~x = -x-1^:按位异或。(相同为0,否则为1)<<:左位.原创 2021-12-25 11:30:19 · 269 阅读 · 0 评论 -
算法-1 复杂度分析
O(1)O(n、n^2、n^3)O(logn、nlogn)O(2^n)O(n!)原创 2021-12-25 11:29:08 · 247 阅读 · 0 评论