
算法学习之路
WMXNLFD
努力成瘾的人
个人博客:https://www.cnblogs.com/wmxnlfd/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法基础模板题3
787. 归并排序给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5#include <iostream>#include <vector>u原创 2020-09-03 14:28:35 · 859 阅读 · 1 评论 -
算法基础模板题11-20
154. 滑动窗口单调队列给定一个大小为n≤106的数组。有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。您只能在窗口中看到k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为[1 3 -1 -3 5 3 6 7],k为3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -3 [原创 2020-09-01 15:23:07 · 473 阅读 · 0 评论 -
算法基础模板题1-10
2. 01背包问题背包问题 DP有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤原创 2020-08-30 13:07:30 · 304 阅读 · 0 评论 -
数论算法
1. 欧几里得算法求两个正整数的最大公约数,时间复杂度 O(logn)。C++ 代码int gcd(int a, int b){ return b ? gcd(b, a % b) : a;}2. 扩展欧几里得算法裴蜀定理:若 a,b是整数,且 (a,b)=d,那么对于任意的整数 x,y,ax+by 都一定是 d 的倍数,特别地,一定存在整数 x,y,使 ax+by=d ...原创 2019-05-20 14:21:34 · 313 阅读 · 0 评论 -
最小生成树算法
假设 n 表示图中点数,m表示图中边数。Prim算法适用于稠密图,时间复杂度 O(n2)。核心思想:每次挑一条与当前集合相连的最短边。C++ 代码// st[i] 表示点i是否在当前生成树集合中// dist[i] 表示点i到当前集合的最短边的长度// g[i][j] 表示点i和点j之间边的长度// 返回值:最小生成树中所有边的总长度int Prim(){ int re...原创 2019-05-20 16:10:07 · 248 阅读 · 0 评论 -
动态规划
54.spiral-matrixGiven a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.Example 1:Input:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]Output: [1,2,3,6,9...原创 2019-05-21 13:33:22 · 143 阅读 · 0 评论 -
二分专题
二分模板一共有两个,分别适用于不同情况。算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。版本1当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;计算mid时不需要加1。C++ 代码模板:int bsearch_1(int l, int r){ ...原创 2019-05-21 17:52:16 · 155 阅读 · 0 评论 -
背包九讲专题
1 01背包问题 2 完全背包问题 3 多重背包问题 4 混合背包问题 5 二维费用的背包问题 6 分组背包问题 7 有依赖的背包问题 8 背包问题求方案数 9 背包问题求具体方案01背包问题有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超...原创 2019-06-09 18:44:39 · 271 阅读 · 0 评论 -
时间复杂度分析
复杂度O(n^2): 动态规划 DP 两重循环O(nlogn): 排序 set mapO(n): 哈希表 双指针扫描数据范围:十万->nlogn1e^9->logn一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 10^7为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:1.n≤30, 指数级别, dfs+剪枝...原创 2019-06-04 09:10:35 · 336 阅读 · 0 评论