10 2023 档案
摘要:简单位运算模拟 class Solution { public: int findKOr(vector<int>& nums, int k) { vector<int> bit(32, 0); for(int i = 0; i < 31; i ++ ) { int cnt = 0; for(auto
阅读全文
摘要:本题为双指针和贪心。当我们遇到奇数个0或1时,直接将下一位改变即可。 class Solution { public: int minChanges(string s) { int n = s.size(); int res = 0; int l = 0, r = -1; while(r ++ <
阅读全文
摘要:二分算法模板 边界要求:二分答案时,我们最终的答案是由mid进行判定,然后通过移动l或r来缩小范围。当我们的数据中所有的数据都无法使l进行移动,l指向一个未定值(-1)表示l没有用到。所以,我们二分模板中的l, r分别指向L - 1, R + 1。 while(l + 1 < r) { int mi
阅读全文
摘要:#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 1e6 + 10, M = 2010; int n, m; int a[N]; i
阅读全文
摘要:定时器可以执行计时和计数的任务。 Systic定时器也叫做滴答定时器,是一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。 寄存器方面: 控制寄存器:CTRL 数值寄
阅读全文
摘要:首先本题可以抽象为从原数组中选出一些子数组,并让这些子数组的(i) * a[i]的和最大 解法: 将原数组从大到小排序 f[i] = i * a1 + (i-1) * a2 + ... f[i-1] = (i-1) * a1 + (i-2)*a2 + ... f[i] = f[i - 1] + (a
阅读全文
摘要:中断服务历程 中断处理是计算机系统中的一种重要机制,用于处理异步事件或请求,如硬件中断、软件异常等。中断处理的基本原理是通过一个中断向量表来确定中断源,并执行相应的中断处理程序。在操作系统层面,这通常是通过中断服务例程(ISR)来实现的。 基本原理如下: 中断源:计算机系统中的各个硬件组件(如外设、
阅读全文
摘要:本题要快速找到某个数字在数组中左边<=它的数的最小下标。 可以建立一个权值线段树,nums[i]处维护最小下标。 class Solution { public: const static int N = 50010, INF = 0x3f3f3f3f; struct Node { int l, r
阅读全文
摘要:2903. 找出满足差值条件的下标 I 2905. 找出满足差值条件的下标 II 这两个题只有数据范围上面的差距 这个题我们大体思路是维护双指针,枚举数字,维护集合。 这是灵神视频的代码 class Solution: def findIndices(self, nums: List[int], i
阅读全文
摘要:模拟题,记录一个k值,表示上一次记录到哪里了。若遇到prev则移动k;否则重置k; class Solution { public: vector<int> lastVisitedIntegers(vector<string>& words) { vector<int> nums, res; int
阅读全文
摘要:通信就是各种设备之间的交流, 如电脑连接键盘、鼠标、打印机之类的。 计算机领域中的通信有两种:串行通信、并行通信。 并行通信 -传输原理:数据各个位同时传输。 -优点:速度快 -缺点:占用引脚资源多 串行通信 -传输原理:数据按位顺序传输。 -优点:占用引脚资源少 -缺点:速度相对较慢 串行通信的通
阅读全文