- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 数据结构与算法:回溯
中也分析过,主要是因为程序运行的时候对unordered_set 频繁的insert,unordered_set需要做哈希映射(也就是把key通过hash function映射为唯一的哈希值)相对费时间,而且insert的时候其底层的符号表也要做相应的扩充,也是费时的。中分析过,组合,子集,排列问题的空间复杂度都是O(n),但如果使用set去重,空间复杂度就变成了O(n^2),因为每一层递归都有一个set集合,系统栈空间是n,每一个空间都有set集合。,其中可能包含重复元素,请你返回该数组所有可能的。
2025-05-04 23:56:19
718
原创 qemu学习笔记:QOM补充
说明:小白学习qemu的一些学习笔记。主要是学习《QEMU&KVM源码解析与应用》这本书。参考:《QEMU&KVM源码解析与应用》作者:李强。
2025-05-04 00:48:05
705
原创 数据结构与算法:图论——最短路径
先给出一些leetcode算法题,以后遇见了相关题目再往上增加最短路径的4个常用算法是Floyd、Bellman-Ford、SPFA、Dijkstra。
2025-05-02 23:51:02
1380
原创 qemu学习笔记:QOM
说明:小白学习qemu的一些学习笔记。主要是学习《QEMU&KVM源码解析与应用》这本书。参考:《QEMU&KVM源码解析与应用》作者:李强Qemu - 百问网嵌入式Linux wikiQOM 定义:QEMU Object Model,是 QEMU 中对对象的抽象层,用于管理和抽象资源(如设备创建、配置、销毁)及后端组件(如 MemoryRegion、Machine 等)。面向对象思想:继承、封装、多态。
2025-05-02 00:02:05
1206
原创 Linux0.11系统调用:预备知识
这些接口为了应用级的代码能够在不同的操作系统上都可以运行,就需要有标准去限制系统调用接口的标准。这些系统调用号对应于 include/linux/sys.h 中定义的系统调用处理程序指针数组表 sys_call_table[]中项的索引值。目标:了解系统调用的流程,在Linux 0.11上添加两个系统调用,并编写两个简单的应用程序测试它们。指的是同一个东西:在 Linux 内核中,每个系统调用都具有唯一的一个系统调用功能号。的声明,下面得找到定义,Linux0.11的源码好像没有找到,但是在。
2025-04-29 22:17:38
1037
原创 Linux0.11引导启动程序:简略过程
Head.s 代码的主要作用是初步初始化中断描述符表中的 256 项门描述符,检查 A20 地址线是否已经打开,测试系统是否含有数学协处理器。那么最后,执行完head.s后,已经正式完成了内存页目录和页表的设置,并重新设置了内核实际使用的中断描述符表 idt 和全局描述符表 gdt。简而言之,A20 地址线控制着 80386 对 (1MB) 以上内存的访问方式,是实模式兼容旧架构与保护模式充分利用内存的关键控制项。进入保护模式,寻址方式发生改变,需要段选择符、段描述符,这里进行最初的设置,后面在。
2025-04-28 23:12:48
609
原创 makefile总结
通过make工具和Makefile去管理需要编译的文件:延迟赋值,执行到这个变量时才赋值Makefile_test1文件A = 123B = $(A)A = 456.PHONY:allall:Makefile_test1:7: *** 遗漏分隔符 (null)。停止。!!!!!!!这里是tap建被vscode换成4个空格了,需要设置!!!!!!!#这里是执行到$(B)时,B才执行B = $(A) 456echo "456"456:=:为立即赋值,与常规思路一样A = 123。
2025-04-27 22:42:07
965
原创 Linux0.11内存管理:相关代码
x86 架构规定:当向 CR3 写入数据时,无论值是否变化,CPU 都会。,迫使后续虚拟地址转换时重新查询页目录和页表,确保使用最新的地址映射关系。是可选关键字,用于禁止编译器优化该汇编指令(内核中常用)。这个是主要文件:分成一段一段的去看。的语法,在C语言中嵌入汇编指令。分隔,即使某部分无内容,对应的。GNU 内联汇编的基本格式。,不i管值变不变都会刷新。那么这个代码可以看成,把。,表示开始内联汇编。
2025-04-26 18:54:59
779
原创 Linux0.11内存管理:分页机制
主要参考:赵炯博士的《Linux内核完全注释(修正版v3.0)》。非常详细对应的是第十三章 第 13 章 内存管理(MM)
2025-04-25 18:28:46
588
原创 12051205
你的代码可能是这样的: 在有尾递归优化的情况下,最后一条语句不用压栈,不占用栈空间,因此空间复杂度为S(n)=S(left)+1 在平衡的时候,left=n/2,S(n)=S(n/2)+1,得S(n)=O(logn) 在树严重向左偏,left=n-1,S(n)=S(n-1)+1,得S(n)=O(n) 当树严重向右偏,left=1,S(n)=S(1)+1,得S(n)=O(1)从我前面的例子、图,以及还有代码来看,不管操作是插入、删除还是查找,时间复杂度其实都跟树的高度成正比,也就是 O(height)。
2025-03-21 21:02:23
620
原创 卡码网总结刷题
cincin是C++中, 标准的输入流对象,下面列出cin的两个用法,单独读入,和批量读入 cin的原理,简单来讲,是有一个缓冲区,我们键盘输入的数据,会先存到缓冲区中,用cin可以从缓冲区中读取数据。 注意1:cin可以连续从键盘读入数据 注意2:cin以空格、tab、换行符作为分隔符 注意3:cin从第一个非空格字符开始读取,直到遇到分隔符结束读取注意:这题错的同学请注意题目的提示“注意,测试数据不仅仅一组。也就是说,会持续输入N以及后面的a和b”,只有一次cin>&
2024-03-16 12:33:52
253
原创 leetcode刷题总结
1.sort()函数,默认的是对二维数组按照第一列的大小对每行的数组进行排序。所以可以加上cmp函数用按照任意列对数组进行排序。将区间[first,last)的元素赋值到当前的vector容器中,这个容器会清除掉vector容器中以前的内容。或者赋n个值为x的元素到vector容器中,这个nums.end()是取不到的,所以。从begin()开始有几个数就加上几。
2024-03-15 17:49:39
398
原创 FPGA刷题总结
35.下列说法错误的是()【A】为了避免wire信号出现X态,最好在声明时赋初始值0【B】一个模块例化多次,可以使用generate for循环减少代码量【C】模块例化时,需要将端口显式列出,即使某个端口未连接信号【D】循环表达式的循环次数必须为常数所以D错误。A选项,为了避免wire信号出现X态,最好在声明时赋初始值0,没有见过这种说法(但也没有找到证明它错误的权威的解析),但是wire型信号是可以在声明时赋初始值0的,例如:wire a=1’b0;B选项和C选项正确。正确答案:D。
2024-03-06 14:47:04
1196
原创 各种傅里叶变换
clc,clear,close all;N=1024;sig1=fmlin(N,0.15,0.25);%%暂态信号2sig2=fmlin(N,0.1,0.2);sig=sig1+sig2;%这个是估算瞬时频率figure(3);[f,t]=instfreq(sig1);plot(t,f);%短时傅里叶变换%就是这个tfrstftstft=MZJ_stft( sig );figure(1);imagesc( abs(s...
2022-05-09 18:47:30
1318
1
原创 python爬图片
import requestsimport osfrom bs4 import BeautifulSoupurl = input("输入网站:")#字典dic={ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Edg/100.0.1185.39"}resp = re.
2022-04-14 20:50:30
472
原创 二分查找 2022/3/28
//二分查找//二分查找1.最左边的第一位//二分查找2.最右边的第一位#include <iostream>#include <vector>using namespace std;//最基本的二分查找无法确定找到的是哪一个最先找到的输出int FristBinarySearch(vector<int> nums,int target){ int left=0,right=nums.size()-1; int mid=0; while(left..
2022-03-28 23:58:37
314
原创 stringstream比较数字大小,string转int
165. 比较版本号 - 力扣(LeetCode) (leetcode-cn.com)#include<iostream>#include<string>#include<algorithm>#include<vector> #include<sstream>using namespace std;string fort_zero(string& s){ bool flag=0; int left=0,right=
2022-03-24 17:00:55
802
原创 stringstream分割任意字符
在 C++ 中,可以使用 istringstream 配合 getline 根据分隔符来分割字符串。istringstream, ostringstream, stringstream区别#这 3 个 stream 都可以通过头文件 #include <sstream> 引入。三者的区别如下: ostringstream : 用于执行 C 风格字符串的输出操作。 istringstream : 用于执行 C 风格字符串的输入操作。 stringstream : 同时.
2022-03-24 14:51:14
1207
原创 C++比较器
bool custom_compare(int a, int b) { int binary_count_a =0,binary_count_b=0,a_mid=a,b_mid=b; while(a) {binary_count_a ++;a &=a-1;} while(b) {binary_count_b ++;b &=b-1;} if(binary_count_a<binary_count_b) return true; el...
2022-03-24 14:07:46
1894
原创 二进制1的个数
方法1int bitcount (unsigned int n){ int count=0 ; while (n) { count++ ; n &= (n - 1) ; } return count ;}这个代码中核心的代码只有一行,就是 n &= (n - 1) ,我们分开看一下:n-1:一个二进制的数减1,就是将这个二进制最右边的那个1变成0,然后它后边的所有位置都变成1~ 举例:0011 0100,减1.
2022-03-24 14:05:28
299
原创 迭代器常用操作
1.通用操作1.1迭代器运算符1 *it返回迭代器it所指元素的引用、即解引用指回去2 反向迭代器坐标轴都是反的中心对称3 迭代器类型 容器类型::iterator 反向迭代器类型 容器类型::reverse_iterator#include <string>using namespace std;int main() { string tar="abcdefg"; // 迭代器类型是 容器类型::iterator for(strin...
2022-03-16 19:47:47
294
原创 2022/1/25
基本语法1.string之间的比较大小原则:找第一个不同的比较得结果,对大小写敏感,A<a大写变小写'A'+32='a'#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int main(){ vector<string> words={"a","Aee", "b", "app", "app.
2022-01-25 21:52:03
289
原创 string类C++笔记
#include<string>头文件1.定义初始化赋值输入输出对象#include <iostream> #include <string> //getline(cin,str1) 用于string类 using namespace std;int main(){ //定义string对象 string str1; //初始化string对象 string str2="c++"; //复制初始化..
2022-01-25 21:48:23
505
原创 getline()、cin.get()和cin.getline()
1.<istream>中的cin.getline(m,5) 用于char数组cin>>cin默认使用空白(空格、制表符、换行符)来确定字符串的结束位置:在<istream>中的getline()函数有两种重载形式:cin.getline()istream& getline (char* s, streamsize n );istream& getline (char* s, streamsize n, char delim );用法:接收一
2022-01-25 20:08:17
481
原创 2022/1/24
基本语法1.sort与比较器使用:#include <algorithm> using namespace std;时间复杂度:n*lg(n)形式:sort(first_pointer,first_pointer+n,cmp)第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。第二个参数相对较好理解,即首地址加上数组的长度n(代表尾地址的下一地址)。最后一个参数是比较函数的名称(自定义函数cmp),即第三个参数可以缺省,这样sort会默认.
2022-01-24 20:41:17
5139
原创 2022/1/23笔记
基本语法1.输入输出1.<istream>中的getline()函数cin.getline(m,5)cin>>cin默认使用空白(空格、制表符、换行符)来确定字符串的结束位置:在<istream>中的getline()函数有两种重载形式:cin.getline()istream& getline (char* s, streamsize n );istream& getline (char* s, streamsize n, cha.
2022-01-23 23:03:00
297
原创 2022/1/22笔记
基本语法1.sort对vector排序C++ vector用法详解 分为升序和降序两排序方式: vector<int>v; sort(v.begin(), v.end(),less<int>());//升序 sort(v.begin(), v.end(),greater<int>());//降序 sort(obj.begin(),obj.end());//从小到大 reverse(obj.begin().
2022-01-22 23:08:45
304
原创 2022/1/22笔记背包问题
首先是背包分类的模板:1、0/1背包:外循环nums,内循环target,target倒序且target>=nums[i];2、完全背包:外循环nums,内循环target,target正序且target>=nums[i];3、组合背包:外循环target,内循环nums,target正序且target>=nums[i];4、分组背包:这个比较特殊,需要三重循环:外循环背包bags,内部两层循环根据题目的要求转化为1,2,3三种背包类型的模板1、最值问题: dp[i] = m
2022-01-22 14:26:24
552
原创 2022/1/21笔记
01背包问题class Solution {public: bool canPartition(vector<int>& nums) { int len=nums.size(); int mid=0,tar=0; for (int a:nums) mid+=a; if(mid%2!=0) return false; tar=mid/2; bool pd[len+1][tar+1
2022-01-21 23:55:23
4531
原创 2022/1/20笔记
1.unordered_map用法C++ STL unordered_map容器用法详解 (biancheng.net)C++中的unordered_map用法详解#include<string> #include<iostream> #include<unordered_map>using namespace std; int main(){ unordered_map<string, int> dict; //.
2022-01-21 09:39:56
199
原创 2022/1/19
1.知识点break continueclass Solution {public: string modifyString(string s) { int len=s.size(); for(int i=0;i<len;i++) { if(s[i]=='?') { for(char res='a';res<='z';res++) .
2022-01-20 10:53:44
85
原创 简单排序记忆
1.冒泡排序void Bubble(vector<int>& arr){ for(int i=0;i<arr.size()-1;i++){ 0 len-1 for(int j=0;j<arr.size()-i-1;j++){ 0 len-1-i if(arr[j]>arr[j+1]) swap(arr[j],arr[j+1]); .
2022-01-18 19:37:40
182
原创 2022/1/18
1.除二操作/2与>>1而>> 1和/ 2在n为负奇数时截断的反向不一样。-5 / 2 = -(int)2.5 = -2,这里是把绝对值变小了,加个负号,结果就变大了。-5 >> 1 = (1011) >> 1 = (1101) = -3,假设用4-bit表示一个整数,补码表示。发现结果变小了。-5 / 2 = -2 5 / 2 = 2。这表明除二是向零取整-5 >> 1 = -3 5 >> 1 = .
2022-01-18 18:43:11
299
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人