09 2023 档案
摘要:在STM32中,端口是指一组相同功能的引脚,通常用于连接外设或者控制IO口。 每个端口都有一些寄存器来控制和表示其状态。 而引脚则是指单个的IO口,可以通过设置GPIO相关寄存器来控制它的输入输出状态。 gpio 端口中的寄存器 这些寄存器也就是库函数中gpio_typedef的成员。 寄存器可以分
阅读全文
摘要:单调队列通常用来解决区间最值问题。 二维单调队列用来在矩阵中找子矩阵的最值,即求a * b大小的子矩阵中的最大值与最小值。 做法: 我们先预处理出每行滑动窗口长度为b的最值,并将其放到窗口最右侧位置;如0~b - 1窗口的最值放到 下标为b - 1 的位置。 处理完行后,我们对列进行处理,维护长度为
阅读全文
摘要:本题我们要快速的判断一个点在拓扑序中是不是另一个点的前驱,先求出拓扑序,在利用二进制代表集合来进行前驱的判断。 class Solution { public: const static int N = 110, M = N * N; int h[N], e[M], ne[M], idx; int
阅读全文
摘要:本题是简单的模拟,但是对于多维数据的表示(x, y)本题更想探究一下array和tuple之间的区别。 array版本 class Solution { public: bool checkValidGrid(vector<vector<int>>& grid) { if(grid[0][0]) r
阅读全文
摘要:思想 a ~ b区间可以转换为 0 ~ b - 0 ~ (a - 1) 用这种前缀和的思想,可以快速枚举所有合格条件的自区间。 class Solution: def subarraySum(self, nums: List[int], k: int) -> int: m = dict() m[0]
阅读全文
摘要:反悔贪心,顾名思义,就是可以反悔的贪心算法。 反悔贪心有两种实现方式:一种是利用堆实现,成为反悔堆;另一种是通过差值构造来构造出反悔自动机,让任何一种贪心策略都可以得到最优解。 本题我们可以先对lastday进行排序,之后遍历列表若能加入堆,直接加入;若不能加入,则看一看堆顶元素和当前元素的关系,若
阅读全文
摘要:经典拓扑排序的应用,用拓扑排序的算法看看原图中是否有一个合法的拓扑序。 class Solution { public: const static int N = 2010, M = 5010; int h[N], e[M], ne[M], idx; int d[N], q[N]; void add
阅读全文
摘要:环图由一些简单的链和环组成。 对于有向图,所有点入度与出度 <= 2,就是一个环图 对于无向图,所有点的度数 <= 2,就是一个环图 环图中所有的链与环互不相交。 常见问题:环的大小,个数,路径 这种无序变有序的问题,建图方法:把起点向终点连一条边。每个点入度出度都是1,所以建成的图中只存在若干简单
阅读全文
摘要:我们用栈同时维护当前字符串和倍数以及要加倍的字符串 当遇到"["时,我们保存当前字符串,即将当前字符 cres 串入栈; 当遇到"]"时,res = cres + 倍数 * 应加倍的字符串 class Solution: def decodeString(self, s: str) -> str:
阅读全文
摘要:本题为八方向枚举,且结合枚举状态时的直角拐弯。 如图,假设我们正在枚举1号方向,它可以向7和3方向转弯,观察其二进制规律,第一位取反,及d ^ 2, 第2位为0和1, 枚举详见代。 #include<iostream> #include<cstdio> #include<cstring> #incl
阅读全文