自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 【C++进阶】AVL树

/该节点的左孩子//该节点的右孩子//该节点的双亲//该节点的key和valueint _bf;//balance factor 平衡因子AVLTreeNode(const pair<K, V>& kv) //该节点初始化, _kv(kv), _bf(0){}

2024-05-22 17:57:06 875 2

原创 【最短路问题】bfs解决最短路问题(权为1)

【代码】【最短路问题】bfs解决最短路问题(权为1)

2024-05-19 14:36:38 514

原创 【Floodfill算法】dfs或者bfs解决floodfill算法

【代码】【Floodfill算法】dfs解决floodfill算法。

2024-05-18 21:22:16 279 1

原创 【BFS】队列与宽搜四小题

【代码】【BFS】队列与宽搜四小题。

2024-05-18 12:35:22 145

原创 【递归、回溯和剪枝】综合训练<二>

组合总和解法一:解法二: 2.字母大小写全排列字母大小写全排列 优美的排列 N皇后 有效的数独 解数独 单词搜索 黄金矿工 不同路径iii

2024-05-14 19:13:28 264

原创 【递归、回溯和剪枝】综合训练<一>

【代码】【递归、回溯和剪枝】综合训练刷题。

2024-05-13 15:21:23 190

原创 【递归、回溯和剪枝】全排列 && 子集

什么是回溯算法回溯算法是⼀种经典的递归算法,通常⽤于解决组合问题、排列问题和搜索问题等。回溯算法的基本思想:从⼀个初始状态开始,按照⼀定的规则向前搜索,当搜索到某个状态⽆法前进时,回退到前⼀个状态,再按照其他的规则搜索。回溯算法在搜索过程中维护⼀个状态树,通过遍历状态树来实现对所有可能解的搜索。回溯算法的核⼼思想:“试错”,即在搜索过程中不断地做出选择,如果选择正确,则继续向前搜索;否则,回退到上⼀个状态,重新做出选择。回溯算法通常⽤于解决具有多个解,且每个解都需要搜索才能找到的问题。

2024-05-12 21:26:23 222

原创 【动态规划】简单多状态dp问题

与 买卖股票的最佳时机iii是完全类似的只需要把j次变为k次就可。

2024-05-12 15:30:01 231

原创 【Linux系统】进程控制

所以我们面对程序出现错误,两步判断就可。

2024-05-09 21:59:56 1167 2

原创 【递归、回溯和剪枝】二叉树中的深搜

⼆叉树中的深搜,是我们树或者图这样的数据结构中常⽤的⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分⽀,直到⼀条路径上的所有节点都被遍历完毕,然后再回溯到上⼀层,继续找⼀条路遍历。在⼆叉树中,常⻅的深度优先遍历为:前序遍历、中序遍历以及后序遍历。因为树的定义本⾝就是递归定义,因此采⽤递归的⽅法去实现树的三种遍历不仅容易理解⽽且代码很简洁。并且前中后序三种遍历的唯⼀区别就是访问根节点的时机不同,在做题的时候,选择⼀个适当的遍历顺序,对于算法的理解是⾮常有帮助的。

2024-05-09 19:25:02 366

原创 【C++进阶】map && set 使用特性

set文档介绍set是按照一定次序存储元素的容器。在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。set在底层是用二叉搜索树(红黑树)实现的。

2024-05-08 22:12:48 1127 6

原创 【递归回溯剪枝】递归

思路:递归,找相同子问题。

2024-05-07 22:11:48 264

原创 【动态规划】路径问题

思路:状态表示状态转移方程。

2024-05-06 22:15:11 301 2

原创 【基础算法】字符串专题

思路:解法一:两两比较求出公共前缀解法二:统一比较。

2024-05-06 20:26:21 257

原创 【动态规划】斐波那契数列模型

思路:简单的线性动态规划1.确定状态表示经验 + 题目要求本题为,以i位置为结尾,这个位置的泰波那契数是多少2.写出状态转移方程3.细节问题a.初始化b.填表顺序c.返回值。

2024-05-05 22:27:04 332

原创 【基础算法】模拟

如果差值大于等于duration,则说明中毒要持续duration妙。从a-z依次尝试替换?是否满足题意,第一个满足的就可break掉。如果差值小于duration,则说明中毒要持续两者的差值。计算两个相邻时间的差值。

2024-05-03 15:49:12 328 1

原创 【C++进阶】二叉搜索树特性 && 二叉搜索树模拟实现

我们之前在c语言部分数据结构初阶就已经讲过二叉树了,为什么那时我们不讲二叉搜索树呢?这是有原因的,这里讲二叉树进阶是因为:1.map与set特性需要先铺垫二叉搜索树的概念,理解了二叉搜索树可以更好的理解map与set2.当时用c语言讲二叉树时没有将进阶,是因为这部分较难,长时间下容易忘记。3.一些OJ题更适合用c++解决,当时用c语言会比较麻烦,需要动态开辟数组等。因此有了进阶二叉树部分,是对我们的二叉树进行的收尾总结。

2024-05-02 16:26:56 884 5

原创 【C++进阶】多态详解

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。

2024-05-01 17:14:50 984 17

原创 【基础算法】位运算

:有0就是0|:有1就是1^:相同为0,相异为1/无进位相加。

2024-04-30 22:55:49 654

原创 【基础算法】前缀和

思路:板子题,思路前缀和数组记录。虽是板子,但以后切记不要死记模版。主要要开long long,防溢出。

2024-04-29 22:00:01 363

原创 【基础算法】二分查找

在排序数组中查找元素的第一个和最后一个位置思路:二分左端点和二分右端点模版题public:// 处理边界情况// 记录开始位置// 二分左端点// 判断结果是否成立= target)else// 更新right位置// 二分右端点。

2024-04-29 16:08:25 423

原创 【C++进阶】继承详解

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。public:protected:// 姓名// 年龄// 继承后父类的Person的成员(成员函数+成员变量)都会变成子类的一部分。这里体现出了。

2024-04-25 19:49:09 594 4

原创 【基础算法】滑动窗口

思路:滑动窗口四步-》1.进窗口2.判断3.出窗口4.更新结果-》这个更新结果的位置就题而定。

2024-04-24 09:22:50 308 1

原创 【基础算法】双指针

思路:利用双指针算法cur:从左往右扫描数组,遍历数组dest:处理好的区间包括destdest初始化为-1,因为刚开始dest前应该没有非零元素。即将非零元素移到dest之前即可。

2024-04-23 11:17:30 495 4

原创 【c++初阶】模板进阶

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-04-22 21:15:12 782 17

原创 【C++初阶】vector使用特性 && vector模拟实现

vector的一些构造函数!!!vector()(重点);无参构造vector(size_type n, const value_type& val = value_type())构造并初始化n个val(重点) 拷贝构造使用迭代器进行初始化构造it!it++)

2024-04-21 23:27:32 983 4

原创 【C++初阶】List使用特性及其模拟实现

1. list是可以在在的,并且该容器可以前后双向迭代。2.,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。4. 与其他的序列式容器相比(array,vector,deque),。5. 与其他序列式容器相比,list和forward_list。

2024-04-20 21:44:09 944 4

原创 【Linux系统】地址空间 && Linux内核进程调度队列

其实 我们小学时可能就有划分区域这个概念了,小学时我们在分配座位坐好后,你可能与你的同桌共用一张桌子,那么你们必然要划分工作区域咯,我们当时叫它为38线,那么此时的划分区域也就类似这样,用代码怎么表述?其实就是一个结构体!!!来记录你的开始位置到结束位置!对于区域的扩张与缩小其实就是对数据的+-了!!!

2024-04-19 21:59:04 763 13

原创 【C++初阶】priority_queue原理使用 && 模拟实现

1.是一种,根据严格的弱排序标准,它的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4.,也可以是其他特定设计的容器类。容器应该,并支持以下操作:5. 标准容器类vector和deque满足这些需求。

2024-04-18 22:01:29 485 13

原创 【Linux系统】进程优先级&&环境变量

最开始的环境变量不是在内存中,而是在系统对应的内存文件中!!!

2024-04-11 22:30:11 1091 16

原创 【Linux系统】进程状态

Linux进程状态本质上是task_struct这个结构体内的一个变量用来存储进程状态。//内部的一个属性int status;R(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。S(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))。D(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。T。

2024-04-10 14:08:57 1053 22

原创 【Linux系统】进程概念&&创建进程&&进程标示符

操作系统中, 进程可以同时存在非常多的。根据我们之前谈的操作系统具有“管理”的特性, 那么就有,既然要管理,就要 ---由冯诺依曼体系结构我们知道磁盘中的文件都是要加载到内存然后由内存与CPU交互完成一些任务的。所以其实当我们运行一些程序时就会为我们创建一个进程。这个进程是什么样的?那么当我们运行我们写出来的c/c++代码时。首先从磁盘中把我们的代码和数据加载到内存中这个PCB要在内存中加载的操作系统中malloc出对应的空间,实质上就是一个结构体类型,

2024-03-26 23:22:33 831 19

原创 【Linux系统】冯诺依曼与操作系统

如图即为冯诺依曼大致的体系结构图, 我们知道这些都是由我们的计算机硬件组成输入设备:键盘, 鼠标, 摄像头, 话筒, 磁盘, 网卡...输出设备:显示器, 声卡, 磁盘, 网卡...CPU:运算器和控制器存储器:内存在上图冯诺依曼体系结构图中我们可以看到红色箭头都代表的是数据的流动,那我们就要研究数据在我们的计算机的冯诺依曼体系结构中是怎么流动的呢?这里给出结论:数据流动从一个设备到另一个设备,在我们的冯诺依曼结构中我们的。

2024-03-26 00:01:18 1272 7

原创 【c++初阶】string类的使用及模拟实现

此时。

2024-03-11 15:25:37 926 18

原创 【Linux基础】Linux自动化构建工具make/makefile

3. 如果test.exe文件不存在,或是test.exe所依赖的后面的test.o文件的文件修改时间要比test.exe这个文件新(可以用 touch 测试),那么,他就会执行后面所定义的命令来生成test.exe这个文件。5. 当然,你的C文件和H文件是存在的啦,于是make会生成 test.o 文件,然后再用 test.o 文件声明make的终极任务,也就是执行文件test.exe了。8. make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。

2024-02-24 21:37:01 1084 1

原创 【c++初阶】模板初阶(泛型编程与模板)

class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)

2024-02-24 19:01:18 708

原创 【c++初阶】类与对象(下)

在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 【注意】 3. 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类

2024-02-23 18:19:38 1031 2

原创 【c++初阶】类与对象(中)

如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。 对于以下Date类: 对于Date类,可以通过 Init 公有方法给对象设置日期,但如果每次创建对象时都调用该方法设置信息,未免有点麻烦,那能否在对象创建时,就将信息设置进去呢?构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适的初始

2024-02-22 19:01:31 679 3

原创 【c++初阶】类与对象(上)

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。一般情况下,更期望采用第二种方式。注意:平常练习第一种更方便,大家后序工作中尽量使用第二种。

2024-02-17 11:42:06 827 3

原创 【c++初阶】c++入门

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。// bit是命名空间的名字,一般开发中是用项目名字做命名空间名。// 我们上课用的是bit,大家下去以后自己练习用自己名字缩写即可,如张三:zs// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;

2024-02-10 13:56:29 685 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除