
02算法专栏
文章平均质量分 67
分析算法专项
_刘小雨
一枚普通而~~~
展开
-
【go语言】实现广度优先搜索
给定一个二维数组,0表示可走的点,1表示不可走的点,找出一条最短的路线6 50 1 0 0 00 0 0 1 00 1 0 1 01 1 1 0 00 1 0 0 10 1 0 0 0思路go 语言要点原创 2022-06-02 21:55:51 · 686 阅读 · 0 评论 -
【双指针】最长连续不重复子序列,数组目标和,子序列
文章目录最长连续不重复子序列数组元素的目标和判断子序列最长连续不重复子序列给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。#include <iostream>using namespace std;const int N = 100010;int n;int a[N],原创 2021-02-15 16:56:07 · 294 阅读 · 0 评论 -
链表,模拟栈,模拟队列,并查集算法模版
文章目录单链表双链表栈(数组模拟栈)队列(数组模拟队列)循环队列单调栈单调队列KMPTrie 树并查集堆(堆排序, 模拟堆)一般哈希字符串哈希C++STL 简介单链表// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插入一个数avoid insert(int a){原创 2021-02-09 00:27:39 · 333 阅读 · 0 评论 -
树,图,图论算法模版
文章目录树与图的存储树与图的遍历深度优先遍历宽度优先遍历拓扑排序朴素dijkstra算法堆优化版dijkstraBellman-Ford算法spfa 算法(队列优化的Bellman-Ford算法)spfa判断图中是否存在负环floyd算法朴素版prim算法Kruskal算法染色法判别二分图匈牙利算法树与图的存储树是一种特殊的图,与图的存储方式相同。对于无向图中的边ab,存储两条有向边a->b, b->a。因此我们可以只考虑有向图的存储。(1) 邻接矩阵:g[a][b] 存储边a->原创 2021-02-09 00:26:49 · 363 阅读 · 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 >>原创 2021-02-08 22:09:12 · 560 阅读 · 0 评论 -
字符串哈希算法的应用(超级实用)
字符串哈希的方法: 在刷一些字符串的题目中是非常实用的,是一个不得不掌握的“套路”。下面讲述字符串哈希的方法。(主要是利用字符串的前缀哈希)例如 : 字符串 str = “ABCD”;第一步: 将上面的字符 映射成从1开始的 A - 1; B - 2 …第二步: 将上面的字符串看成是一个P进制的数 (1234)p 。 这里的P 是一个经验值 : 131 或者是13331.第三步: 然后将上面的P进制的数转换成 十进制的数字。 然后mod 一个数字264. 为了保证不冲突。(1 * P..原创 2020-11-28 17:08:18 · 944 阅读 · 2 评论 -
字符串统计 Trie树
题目维护一个字符串集合,支持两种操作:“I x”向集合中插入一个字符串x;“Q x”询问一个字符串在集合中出现了多少次。共有N个操作,输入的字符串总长度不超过 10^5,字符串仅包含小写英文字母。输入格式第一行包含整数N,表示操作数。接下来N行,每行包含一个操作指令,指令为”I x”或”Q x”中的一种。输出格式对于每个询问指令”Q x”,都要输出一个整数作为结果,表示x在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗10^4输入样例:5I abcQ abcQ ab原创 2020-11-26 19:39:54 · 135 阅读 · 0 评论 -
几大排序算法+ kmp 的理解和代码实现
文章目录几种常见的排序(比较)冒泡排序 (百度百科)Code:选择排序 (百度百科)Code插入排序(百度百科)希尔排序(百度百科)Code快速排序(百度百科)Code归并排序(百度百科)Code堆排序(百度百科)Code:kmp算法在面试中的应用暴力做法Code优化做法 : KMP 算法Code几种常见的排序(比较)冒泡排序 (百度百科)这里就按照下面的两步模拟冒泡排序: 后面的类似,就不展示。Code:#include <iostream>using namespace s原创 2020-11-22 13:19:06 · 1079 阅读 · 2 评论 -
最长序列问题,n皇后问题
文章目录题目:最长上升子序列输入输出解法: 动态规划 O(n^2)输入输出解法 动他规划 O(nlogn)题目: 最大子列和输入输出解法: 动态规划题目: n皇后问题输入输出解法: 回溯 - 剪枝 O(n!)AC代码题目:图的着色问题输入输出解法:AC代码题目:最长上升子序列给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入输出输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−1原创 2020-11-16 13:29:53 · 443 阅读 · 0 评论 -
贪心问题求解思路(总结)
贪心问题: 局部最优解, 需证明该解就是该题的最优解无其他情况,则能直接用贪心法。典型例题: 部分背包问题, 直接用贪心法求的解即最优解,;而0-1背包问题额不能用贪心法去求最优解。下面给出几道贪心的典型例题,在知道思路的情况,可遇到题目则以不变应万变去求解。例题1 : 区间选点给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两.原创 2020-10-01 17:07:49 · 1244 阅读 · 0 评论 -
用指针拼接两个字符串
今天6月1号,儿童节,偶然看到一个用指针拼接两个字符串,先来无事,写下代码。#include <iostream>char* myfunc(const char* str1, const char* str2){ char* str = new char[strlen(str1) + strlen(str2)+1]; strcpy(str, str1); strcat(str, str2); return str;} int main(){ const char* .原创 2020-06-01 23:24:19 · 2460 阅读 · 1 评论 -
分享几道动态规划的题目
** 爬楼梯**假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 ...原创 2020-01-31 23:01:49 · 253 阅读 · 0 评论