- 博客(81)
- 收藏
- 关注
原创 Linux详解基本指令(一)
如果当前⽤⼾是root: yum install -y tree (因为现在开始⽤的都是root,所以推荐这个⽤法) # 如果当前⽤⼾是普通⽤⼾: sudo yum install -y tree (后⾯讲讲完vim,⼤家才能将⾃⼰添加到系统信任列表中,暂时普通⽤⼾⽆法使⽤sudo)理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性。
2025-05-19 17:46:46
1163
原创 Linux环境搭载
Linux环境的搭建主要有三种方式:直接安装在物理机、使用虚拟机软件和购买云服务器。直接安装不推荐,因为Linux桌面使用不友好;虚拟机软件如VMWare可能存在bug,导致环境问题;最推荐的是使用云服务器,如腾讯云、阿里云等,不仅搭建简单,还能让项目被外网访问,适合学生共用。远程连接Linux需要服务器的公网IP、管理员账户(root)和密码。使用Xshell远程终端软件,通过新建会话并输入ssh [ip]和密码即可连接。在Xshell中,复制粘贴使用ctrl+insert和shift+insert,而非
2025-05-19 09:14:45
356
原创 C++_数据结构_哈希表(hash)实现
当key是string/Date等类型时,key不能取模,那么我们需要给HashTable增加一个仿函数,这个仿函数支持把key转换成一个可以取模的整形,如果key可以转换为整形并且不容易冲突,那么这个仿函数就用默认参数即可,如果这个Key不能转换为整形,我们就需要自已实现一个仿函数传给这个参数,实现这个仿函数的要求就是尽量key的每值都参与到计算中,让不同的key转换出的整形值不同。在理想状态中,去找到符合的哈希函数是不可能的,哈希冲突是必然发生的,所以我们要尽可能减少设计的哈希函数的哈希冲突。
2025-05-18 22:03:08
1052
原创 C++_unordered_map和unordered_set的使用
1. unordered_set系列的使用1.1unordered_set和unordered_multiset参考文档。
2025-04-27 22:36:44
924
原创 C++_数据结构_详解红黑树
大家应该都学过平衡二叉树(AVLTree),了解到AVL树的性质,其实平衡二叉树最大的作用就是查找,AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。AVL树的效率就是高在这个地方。如果在AVL树中插入或删除节点后,使得高度之差大于1。此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树;为了让它重新维持在一个平衡状态,就需要对其进行旋转处理, 那么创建一颗平衡二叉树的成本其实不小.
2025-04-25 11:42:41
1413
原创 LeetCode_滑动窗口_长度最小的子数组
我们继续观察,当我们sum -= nums [left],并且进行判断,sum <= target,那我们需要再回到left的位置吗,当然这是没有必要的,当我们的sum <=target时,此时已经满足,不再进入判断,我们只需要再次right++即可;然后我们通过判断,每次大于我们的target,我们让left++,重新回到left的位置,这样我们的效率来到了n!,当我们大于target时,后续的遍历都会比前一次长度更长,所以省略这些不必要的过程。是该条件下的长度最小的子数组。个正整数的数组和一个正整数。
2025-03-28 13:43:07
451
原创 C++_数据结构_AVL树
因为10 < b子树的值 < 15,将b变成10的右⼦树,10变成15的左子树,15变成这棵树新的根,符合搜索树的规则,控制了平衡,同时这棵的高度恢复到了插入之前的h+2,符合旋转原则。因为5 < b子树的值 < 10,将b变成10的左子树,10变成5的右子树,5变成这棵树新的根,符合搜索树的规则,控制了平衡,同时这棵的高度恢复到了插入之前的h+2,符合旋转原则。对不平衡子树旋转,旋转后本质调平衡的同时,本质降低了子树的高度,不会再影响上一层,所以插入结束。1->2 或者 -1->-2。
2025-02-06 16:52:39
1011
原创 OJ_两个数组的交集_环形链表 ll
数据结构初阶阶段,我们通过证明一个指针从头开始走一个指针从相遇点开始走,会在入口点相遇,指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。这里我们利用set插入的性质,返回的pair(iterator,bool)根据常规解法中的思路,我们发现这与set的性质类似,链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。给定一个链表的头节点。,则在该链表中没有环。
2025-02-04 19:09:05
677
原创 C++_数据结构_map与set
map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型,set默认要求Key支持小于比较,如果不支持或者需要的话可以自行实现仿函数传给第二个模版参数,map底层存储数据的内存是从空间配置器申请的。一般情况下,我们都不需要传后两个模版参数。map底层是用红黑树实现,增删查改效率是OlogN,迭代器遍历是走的中序,所以是按key有序顺序遍历的。
2025-02-04 15:29:35
691
原创 C++_详解多态
多态是一个继承关系下的类对象,去调用同一个函数,产生不同行为。比如student继承person对象。person是全价买票,student是优惠买票。
2024-12-02 22:46:06
856
原创 C++二叉树OJ_中序遍历(非递归)
二叉树的中序遍历(迭代):主要考虑根与左子树插入的前后关系,利用栈(存节点)解决无法访问父节点的问题。主要考虑根与左子树插入数组的前后关系,我们先观察一下二叉树的前序遍历。递归对于你来说,手到擒来(这里就不过多的解释了)在中序遍历(左子树,根,右子树)与上一章。给定一个二叉树的根节点。
2024-11-26 12:55:54
484
原创 C++_深入理解继承与虚继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,而继承是类设计层次的复用。比如说一个人,他具有身高,年龄,姓名等个人信息,然后利用这些信息我们可以定义一个Person类。而当我们想定义一个学生Student类时,学生首先肯定是一个人,所以这时候我们可以复用Person类。但是学生除了具备一个人的基本信息外,
2024-11-25 18:05:06
1052
原创 C++OJ_ 二叉搜索树与双向链表
当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。数据范围:输入二叉树的节点数 0≤n≤10000≤n≤1000,二叉树中每个节点的值 0≤val≤10000≤val≤1000。要求:空间复杂度O(1)O(1)(即在原树上操作),时间复杂度 O(n)O(n)3.函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据结构。输入题面图中二叉树,输出的时候将双向链表的头节点返回即可。2.返回链表中的第一个节点的指针。双向链表的其中一个头节点。
2024-11-16 23:48:24
450
原创 C++_STL之priority_queue(优先级队列)
priority_queue文档介绍优先级队列的实现的关键取决于数据结构的堆,如果忘记了,就回去看看吧【数据结构】详解堆1.优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。
2024-11-15 19:58:40
897
原创 C++_模板进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。
2024-11-15 19:57:35
734
原创 C++OJ_ 栈的压入、弹出序列
例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。由于是[1,2,3,4,5]的压入顺序,[4,3,5,1,2]的弹出顺序,要求4,3,5必须在1,2前压入,且1,2不能弹出,但是这样压入的顺序,1又不能在2之前弹出,所以无法形成的,返回false。it_pop++指向下一元素,再次进入循环判断,新的辅助栈的栈顶是否与++后的*it_pop的值相等,所以此处应该加入一个判断。如果不等,压入压入栈的下个元素。
2024-11-09 16:45:52
984
原创 C++OJ_最小栈
设计一个支持pushpoptop操作,并能在常数时间内检索到最小元素的栈。实现MinStackMinStack()void pop()int top()--> 返回 -3.--> 返回 0.--> 返回 -2.topgetMinpushpoptopgetMin3 * 104。
2024-11-09 14:57:08
622
原创 C++OJ_二叉树的层序遍历
/所以++level后右子树不必++rootlevel(root->left, ++level, s, size);//由于左子树与右子树为同一层。由于题目要求存放在 vector二维数组中,我们。//释放掉不需要的空间。(即逐层地,从左到右访问所有节点)。开辟(2000*(int))的空间。int level(控制存放位置)由于树中节点数目在范围。
2024-11-09 14:10:54
756
原创 C++_STL之Stack,Queue的使用及其模拟实现
stack的文档介绍深入了解栈在数据结构中有讲解深入了解栈这里作简要讲解。queue的文档介绍在数据结构中有讲解最小栈这里作简要讲解。1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。
2024-10-17 18:10:28
774
原创 C++_STL之vector的使用及实现
1.2vector的使用(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造//vectoe//长度为4,值为100的数组//拷贝构造//与s3类似//迭代器it!// const对象使用const迭代器进行遍历打印while (it!it++;
2024-09-30 11:41:37
774
原创 C++_实现日期类
/ 日期-日期 返回天数*this = A;A = *this;*x = *y;*y = tmp;int _month;int _day;
2024-09-26 21:05:06
825
原创 C++模板初阶
class 类模板名// 类内成员定义如下列栈的类模板// 类模版public :_size = 0;// 模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误// 扩容++_size;
2024-09-18 21:57:26
920
原创 C++_内存管理
对于上述操作,C语言的动态内存存储也都可以实现的,那为什么祖师爷还要创建new和delete呢?// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数,有时候我们会忘记调用free函数,导致空间的浪费class sui{public::_sui(sui)~sui() {private:int _sui;delete p2;// 内置类型是几乎是一样的。
2024-09-10 08:43:34
982
原创 C++万字解析类和对象
/与结构体定义格式类似class Date//类域 Date类名//可以存放变量、函数public://公共域_day = day;private://私有域// 为了区分成员变量,⼀般习惯上成员变量// 会加⼀个特殊标识,如_ 或者 m开头int _year;int _month;int _day;//使用(.)操作符d.print();
2024-09-08 20:21:18
1561
原创 C++入门基础
文章目录1.缺省参数2.函数重载2.1重载条件:1.参数类型不同2.参数个数不同3.参数类型顺序不同 2.2不做重载条件情况:1.返回值相同时2.当全缺省遇见无参数3.引用3.1引用特性:3.2引用的使用C++支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调用就表现出了多态行为,使用更灵活。C语言是不支持同一作用域中出现同名函数的。 cpp会根据函数中参数类型进行函数的匹配2.参数个数不同cpp会根据函数中参数类个数进行函数的匹配
2024-09-08 20:16:43
1079
gitee(基于Git的代码托管和研发协作平台)
2024-09-26
TortoiseGit
2024-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人