WenlSun Blog

我干了什么 究竟拿了时间换了什么

字符串相关题目总结

字符串

最长无重复子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 输入:字符串 输出:最长无重复子串的长度 思路:双指针/滑动窗口 参考代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <bits/stdc++.h> using namespace std; int main()...

目标检测相关知识点总结

目标检测

目标检测任务:是找出图像中所有感兴趣的而目标(物体),确定他们的位置和大小,是机器视觉领域的核心问题之一。 目标检测算法的工作流程 两阶段方法 两阶段目标检测算法以R-CNN系列为代表的一系列方法。它们的工作流程是,给定一幅图像,首先从图像中获取候选框,然后对候选框进行分类和位置修正。 单阶段方法 单阶段目标检测算法以YOLO和SDD为代表。 Anchor Free方法 Anc...

位运算相关算法总结

位运算

几个有趣的位运算操作 利用或操作|和空格将英文字符转换成小写 1 2 ('a' | ' ') = 'a' ('A' | ' ') = 'a' 利用与操作&和下划线将英文字符转换成大写 1 2 ('b' & '_') = 'B' ('B' & '_') = 'B' 利用异或操作^和空格进行英文字符大小写互换 1 2 ('d' ^ ' ') = 'D' (...

C++STL自己实现

容器自己实现

实现自己的vector容器 参考代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62...

最小生成树算法模板

最小生成树

假设 n 表示图中点数,m 表示图中边数。 Prim算法 适用于稠密图,时间复杂度是$O(n^2)$ 核心思想:每次挑一条与当前集合相连的最短边 C++代码模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 // st[i] 表示点i是否在当前生成树集合中 // dist[i] ...

最短路径算法模板

最短路径

我们只需考虑有向图上的算法,因为无向图是特殊的有向图。我们可以将所有无向边 u↔vu↔v,都拆分成两条有向边:u←vu←v 和 u→vu→v。为了方便叙述,我们做如下约定:$n$ 表示图中点数,$m$ 表示图中边数。参考yxc大佬的分享 图的存储 图的存储方法一般有两种方式: 邻接矩阵:开个二维数组,g[i][j]表示点$i$和点$j$之间的边权。 邻接表:邻接表有两种常用写...

数论问题算法模板

数论相关

参考yxc大佬的总结 最大公约数(欧几里得算法) 求两个正数的最大公约数,时间复杂度$O(logn)$. C++ 版本代码 1 2 3 4 5 6 7 8 9 10 11 // 最大公约数 a>b int gcd (int a, int b){ return b ? gcd(b, a % b) : a; } // 两个数的最小公倍数 * 两个数的最大公约数 = a*b...

常用数据结构代码模板

数据结构

参考yxc大佬的总结 单链表 C++代码模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // head 存储的链表头,e[]存储结点的值,ne[]存储结点的next指针,idx表示当前用到了哪个结点 int head, e[N], ne[N], idx; // 初始化 void init(){ head = -1; id...

背包问题算法模板

动态规划之背包问题

0-1背包问题 有 $N$ 件物品和一个容量是 $V$ 的背包。每件物品只能使用一次。 第 $i$ 件物品的体积是 $v_i$,价值是 $w_i$。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。原题链接 未优化版本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

滑动窗口模板

滑动窗口

C++ 模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int res = 0; int l = 0; int r = 0; unordered_map<char, int> w; while (r < s.size()) { // 右边界,一直扩展,直到窗口满足条件 char c = s[r]; w[c]++; r++...