数据结构知识点
第 2 章 算法分析$log^{k}N=O(N)$
第 3 章 基础 ADT3.5 List
Array-based lists
Pointer-based lists(Linked lists)
Array ImplementationInsert
12345678910// insert element at the current positionvoid insert(const E& it) { Assert(listSize>=maxSize, “Exceed capacity”); //shift Elements up for(int i=listSize; i>curr; i--) listArray[i] = listArray[i-1]; listArray[curr] = it; // insert the element listSize++; // increment list size}
remove
1234567891011// Remove and return the ...
LEETCODE3211
3211. 生成不含相邻零的二进制字符串
思路由于每个长度为2的子字符串都必须含一个1,所以如果前一个字符为‘0’的话下一个字符必须是‘1’,如果上一个字符是‘1’的话那么下一个字符填什么都可以,直接模拟这个过程写一个dfs即可
Solutions123456789101112131415161718192021class Solution {public: vector<string> validStrings(int n) { vector<string> ans; string path(n, 0); auto dfs = [&](auto&& dfs, int i) -> void{ if(i == n){ ans.push_back(path); return; } path[i] = '1& ...
计组试题
Which type of memory will need refresh circuitry. AA. DRAM B. Flash C. ROM D. Blu-rayDRAM 除非被经常访问用于读/写,否则不能长期保持其状态
The advantage of carry-lookahead adder is.DA. decrease cost of the adder. B. save hardware parts.C. augment CPU clock frequency. D. accelerate the generation of the carries.carry-lookahead 就是为了减少加法器的延迟
In the direct addressing mode.BA. The operand is inside the instruction.B. The address of the operand is inside the instruction.C. The register con ...
训练记录
2024/10/26日正式启动跑步时我只会问自己:我是否配得上今天呢?意义吗?很多事情本来就没有意义,我赋予其意义
我写我,无论主谓宾,可以反复错
我生命的意义不需要任何人去指正,这是我的人生,我做自己想做的事,成为自己想成为的人,何时开始何时放弃何时做何事都只有我自己决定。你觉得我太过苦行僧也好,觉得我瞬息万变不坚持也罢,我只是我。
我有我在乎的人,我爱的人,我爱我所爱,我享受生命的一切。大部分时间我一个人都足够自洽,我的内心世界有无尽的远方,我要和朋友去见更多的风景,极光,雪原,星海,山巅;我要和在乎的人享受平凡生活中的每一点美好,发丝闪烁的微光,大雪时屋内两人温暖的毛毯,夕阳下迎风的飞驰,相见时花和肆意的相拥;我要帮助更多的生命,受伤的动物,摇摇欲坠的家庭,走不出大山的孩子,无尽的远方和无数的人们都和我有关。
我没有什么大的愿景,托家庭之福利,我已经走过很远的路,见过很多伟大和辉煌,余生我只希望能和我的朋友们,家人,或许还有爱人度过平安而幸福的一生。但我相信命运的钥匙掌握在自己手中,幸福需要自己争取,我要变得更强大,直到我有足够的能力获得自己想要的生活,守护想 ...
LEETCODE684
684. 冗余连接
思路:如果在一棵树上加一条边会破坏树的性质,所以什么是一棵树的性质?
树的两个节点之间有且仅有一条唯一路径,换句话说就是一个没有环的连通图
所以很明显利用这一性质,题目中又提到返回最后一条冗余的边,所以我们正常按顺序处理连通关系就可以
并查集模板题
Solutions:1234567891011121314151617181920212223242526int fa[1010];int find(int i){ return (fa[i]==i?i:fa[i]=find(fa[i]));}class Solution {public: vector<int> findRedundantConnection(vector<vector<int>>& edges) { int n=edges.size(); auto merge=[&](int x,int y){ if(find(x)==find(y))re ...
Round981DIV3
C. Sakurako’s Field Trip
思路对于每个位置计算交换以及不交换分别会产生的扰乱度,根据扰乱度的大小决定是否进行交换,最后统计一次答案即可
Solution12345678910111213141516171819202122232425262728293031323334353637#include <bits/stdc++.h>using namespace std;#define fi first#define se secondusing ll = long long;void solve() { int n; cin >> n; vector<int> a(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 2; i <= n / 2; i++) { int pre = (a[i] == a[i - 1]) + ( ...
MIT6.S081_LAB0
XV6 LabLab1: Xv6 and Unix utilitiesxv6的安装以及启动网络上有很详细全面的教程,我就不在此赘述
1.sleep(难度:Easy)实现xv6的UNIX程序sleep:您的sleep应该暂停到用户指定的计时数。一个滴答(tick)是由xv6内核定义的时间概念,即来自定时器芯片的两个中断之间的时间。
实验中需要将编写好的c语言sleep程序添加到 Makefile 中的UPROGS中;完成之后,make qemu将编译您的程序,并且您可以从xv6的shell运行它。
在c语言中 argc参数代表shell接收到的参数个数,argv就是接收到的具体参数
注意c语言中的头文件引入很可能有互相的依赖,所以引入的顺序是一定的,使用clang需要关闭自动按字母排序的选项
记得make qemu
123456789101112131415#include "kernel/types.h"#include "kernel/stat.h"#include "user/user.h"int main(int arg ...
LEETCODE1884
1884. 鸡蛋掉落-两枚鸡蛋
思路观察样例的解释可以发现答案后面是一个类似6 5 4 3 2 1这样的递减序列,那我们思考为什么会产生这样的序列。在假定操作次数T相同的情况下,因为如果每次扔鸡蛋会用掉一次次数的话,那么在鸡蛋摔碎的情况下下一次用于验证的次数就会少一个。那我们就自然想到反向验证,在操作次数为T的情况下最多可以验证多高的楼层?
设操作次数为T,那么可确定的楼层数为 $$T+(T-1)+(T-2)+…+1=\frac{T(T-1)}{2}$$设楼层数为N,得到不等式$$N\leq\frac{T(T-1)}{2}$$
$$解得T≥\frac{\sqrt{8n+1}-1}{2}$$
解方程即可
时间复杂度:O(1)Solution123456class Solution {public: int twoEggDrop(int n) { return (int) ceil(sqrt(n * 8 + 1)) / 2; }};
LEETCODE3158
3158. 求出出现两次数字的 XOR 值
解决思路遍历 nums,同时用一个 vis 集合记录遇到的数字。
设 x=nums[i]。
如果 x 不在 vis 中,说明是第一次遇到,加入 vis。
如果 x 在 vis 中,说明是第二次遇到,加入答案
Solution123456789101112131415class Solution {public: int duplicateNumbersXOR(vector<int>& nums) { int ans = 0; long long vis = 0; for (int x : nums) { if (vis >> x & 1) { ans ^= x; } else { vis |= 1LL << x; } ...
牛客小白月赛102
B题
解法思路$f(n)$和$f(n-1)$之间的区别就是式子的底部加了一个$\frac{1}{a}$
e.g.$f(2)=a+\frac{1}{a},f(3)=a+\cfrac{1}{a+\cfrac{1}{a}}$
根据递推关系可知,当n趋近于无穷大的时候这个影响可以忽略不计,所以我们可以得到$x=a+\frac{1}{x}$
解方程并且取正解可得答案
Solution1234567891011121314151617181920212223242526272829#include<bits/stdc++.h>using namespace std;using ll=long long;ll read(){ ll a=0;int f=0;char p=getchar(); while(!isdigit(p)){f|=p=='-';p=getchar();} while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48);p ...