自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STL库 —— priority_queue 的编写

粗略的介绍与编写优先级队列

2024-04-18 20:42:41 992

原创 STL库 —— stack queue 的编写

关于C++ STL库中栈stack和队列queue的编写

2024-04-18 17:28:39 718

原创 C++典型例题切入数据存储

通过典型例题讲解有关C/C++内存地址空间的存放规则

2024-04-10 21:12:57 644

原创 STL库 —— list 的编写

从通俗易懂的方式切入,讲解list的底层,并一步步深入理解更深刻的内容

2024-04-10 19:47:17 1082

原创 Date类 —— 题目集锦

有关Date类的OJ题目

2024-04-09 10:55:12 372

原创 STL库 —— vector 的编写

手撕了一个比较粗略的vector

2024-04-07 23:04:22 799

原创 STL库 —— string 类的编写

由于历史遗留问题, string 早于 STL 出现,所以 string 并不能属于 STL 库,但是由于其特性和 STL 中的其他容器类似,所以我把它当作 STL 的成员之一。首先先创建一个 .h 头文件 和 .cpp 源文件:在 .h 文件中使用命名空间。

2024-04-05 22:20:58 580 3

原创 C++模板初阶

如果我们想要写一个 Swap 函数,但我们的参数类型可能不同,应该怎么写呢?x = y;y = tmp;x = y;y = tmp;x = y;y = tmp;当我们完成上面的函数时,会不会觉得有点太过繁琐?难道我们不能写一个 Swap 就可以让它实现不同参数的重载吗?其实是可以的,C++ 为我们提供的方法就是模板。类似于现实生活中的模具,我们使用的产品,如鼠标、键盘,成本之一就是开模,如果有了一个模具,各种各样的颜色、材质,都可以使用这一种模具来完成,这就极大的压缩了成本。

2024-04-03 00:14:32 690

原创 C语言编写Linux的Shell外壳

比较粗糙的手搓 Linux_Shell 外壳

2024-04-03 00:14:05 1195 2

原创 位运算算法(2)

【代码】位运算算法(2)

2024-03-29 20:53:01 280

原创 位运算算法(1)

声明:本博客涉及到的三道题均为一种做法的总结,建议先了解做法,然后强化代码能力。

2024-03-29 20:53:00 463

原创 前缀和算法(1)

【代码】前缀和算法(1)

2024-03-27 21:01:54 229

原创 Linux基础IO(操作系统层面理解文件)

在语言层时,我们曾学过文件操作;但是这真的能完全理解文件吗?不是的,真正的理解要从操作系统层面!

2024-03-27 19:15:52 1011

原创 二分查找算法(2)

即下标 i 前的所有元素都升序、后的所有元素都降序, i 是最大值。

2024-03-20 17:31:24 161

原创 二分查找算法(1)

非递减顺序:两个相邻的数后面的大或者两数相等时间复杂度O(logn)联想到二分查找!

2024-03-20 17:31:21 458

原创 滑动窗口算法(2)

即在数组中找一段最长的连续子数组,该子数组的数字种类不超过2。

2024-03-18 13:42:38 422

原创 滑动窗口算法(1)

滑动窗口其实就是两个同向的指针,不停地有数据进入这两个指针的区间,也不停地有数据要退出这个区间,这个区间在整个数组中来回滑动,故名[滑动窗口]。这样一看,我们的题目就变成了在数组中找到和为 sum - x 的最长连续子数组!若问题分析的对象是[一段连续的区间],我们就可以考虑使用[滑动窗口]解决问题。即找有最长1的区间,该区间0的个数不超过k个。

2024-03-14 09:08:18 331

原创 Linux进程概念(2)

进程状态、僵尸进程、孤儿进程、进程优先级、进程地址空间

2024-03-12 23:32:19 785

原创 Linux进程概念(1)

进程的概念

2024-03-12 07:32:36 970

原创 双指针算法(2)

本文为双指针算法的最后一文,用四个题具体地讲解了可以使用双指针的题型

2024-03-06 22:49:46 425

原创 双指针算法(1)

这是将数组分成两部分的题目,当我们遇到把数组分成若干部分的题目时,首先要想到的是双指针,在之前的学习中,我对对撞指针的题目做的比较多,但是这题如果我们使用对撞指针就无法满足“保持非零元素的相对顺序”这一条件,所以我们就考虑到了快慢指针。根据以上情况,我们设置左右指针,并不断选中最小值然后计算其容积,并让非最小值向内移动,不断重复,并不断更新容积的最大值即可。但是我们要注意,因为 dest 指向已处理部分的最后一个元素,所以 dest 是非零的,交换时使用的是 dest++

2024-03-06 17:17:13 812

原创 Linux开发工具使用

软件包和软件包管理器, 就好比 "App" 和 "应用商店" ,我们现在要安装的yum就是相当于在我们的Linux终端安装一个"应用商店"。但使用yum时,我们一定要保证主机(虚拟机)网络畅通!这点也非常好理解,因为在日常操作中我们的手机进入应用商店也是必须要联网的。

2024-03-04 20:51:36 954

原创 类和对象(3)——最终篇

static成员、友元、匿名对象

2024-03-01 15:02:48 779

原创 类和对象(2)——距离C++又近了一步

构造函数、析构函数、拷贝构造函数、赋值运算符重载

2024-02-29 22:50:18 1318

原创 类和对象(1)——开启C++学习之旅

类的定义、封装、类对象模型、this指针

2024-02-29 08:18:16 844

原创 C++入门

C++如何跟踪每一个重载函数呢?它给这些函数指定了秘密身份。使用 C++开发工具中的编辑器编和编译程序时,C++编译器将执行一些神奇的操作-名称修饰(name decoration)或名称矫正(nmmangling),它根据函数原型中指定的形参类型对每个函数名进行加密。请看下述未经修饰的函数原型:这种格式对于人类来说很适合;我们知道函数接受两个参数(一个为 int 类型,另一个为 float类型)并返回一个long值。而编译器将名称转换为不太好看的内部表示,来描述该接口,如下所示:?

2024-02-28 18:51:33 915

原创 C++命名空间

C++通过定义一种新的生命区域来创建命名空间,这样就可以提供一个声明名称的区域,这样的两个区域之间的名称不会发生冲突,而且程序的其他部分也可以使用该命名空间中声明的东西,定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员。1.命名空间可以定义变量/函数/类型。

2024-02-28 15:46:10 993

原创 Linux权限的理解

超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是"$"

2024-02-24 14:17:25 760

原创 Linux常见指令(2)

压缩/解压缩文件或目录,类似zip我们先来看一下我们的文件即目录,接下来我们输入指令:tar -czftest.tgztest压缩-c :建立一个压缩文件的参数指令(create 的意思);-z :压缩(zip的意思)-f :使用档名(file的意思)test.tgz是我们打包后文件的命名,.tgz是我们tar打包后文件的后缀,test是我们需要打包的文件。如果我们想打包多个文件,最后可以跟多个文件或目录。tar -xzftest.tgztest解压缩。

2024-02-22 19:27:29 512

原创 图文说明Linux云服务器如何更改实例镜像

但是此安装包只能在centos7 x86条件下才能安装,我们如果无法正常安装,就需要更改我们的实例镜像。在一系列跟随系统操作后,我们的云服务器已经被停止了,然后继续点击三个点,可以直接搜索“更换操作系统”可能是当时直接默认选择了,我现在要更改,如何做呢?我们需要先把实例状态停止后才能更改,故点击“停止”我这里查询到自己的实例镜像用的是阿里云,点击进入,我们就可以更换我们的实例镜像。进入后在需要更改的服务器最后点击三个点。三、如何更改实例镜像(阿里云为例)二、如何查看自己的实例镜像版本。在左侧栏点击“实例”

2024-02-22 19:09:46 403

原创 快排的非递归版本

我们借助栈来实现非递归的快排,我们需要记住的是,我们的栈存放的是数组的下标,我们还是要借助单趟快排,对从栈中取到下标对应的元素进行排序。我们完成了此次的单趟排序,返回的就是我们的基准值的下标,它的左边都比它小,右边都比它大。其中其实我们不先把left和right压入栈也可以,这样只是更接近的模拟递归。此外,我们要思考一个问题:怎么确定某侧数据处理完毕?因为我们是整理区间,所以当区间左右元素下标相等时,即处理完毕。所以我们的判断条件就是left < keyi-1 或 keyi+1 < right。

2024-01-24 21:06:36 319

原创 一篇博客读懂排序

学到这里,其实这些分布的并非是真正的希尔排序,gap到底取多少的值?其实画图把整个流程完整的走一遍我们就可以知道我们的目的是为了让prev和cur指针中间的值都是比key大的值,然后prev++负责记录下一个大的值,cur负责记录比key小的值,每次找到就交换,最后再把prev的值变为key即可。下面我们先来完成单趟,选用一个key值作为基准值,小的排在左边,大的排在右边,这样一次可以把整个数组分为两部分,然后我们还要进行基准值位置的调整,此时的left位置就是key应在的位置。

2024-01-24 10:13:13 1113

原创 【中位数问题】两个已升序数组确定其中位

二分查找主要运用的特性就是如果两数组的第k/2个元素都相等,那很明显你们的第k/2个元素都是我的第k小元,但是如果两者不等,那肯定较小的那个和它前面比它小的元素都在我的前k个元素中,我直接把你删去然后让k缩小相同的值,现有两个已升序排列的数组𝐴和𝐵,其规模分别为𝑚和𝑛,试设计一个渐近时间复杂度为𝑂(log(𝑚 + 𝑛))的算法去确定𝐴和𝐵的所有元素的中位数。其实这三步就是我们递归的思路,当我们的k逐级减少到1时,就会到达递归出口。

2023-12-25 10:59:52 372

原创 二叉树OJ题目——C语言

给定一个二叉树root,返回其最大深度。二叉树的是指从根节点到最远叶子节点的最长路径上的节点数。32[0, 104]

2023-12-02 21:01:28 977

原创 二叉树链式结构的实现——C语言

首先要判断根是否存在,如果根存在,继续向下遍历,再次遍历的时候,先判断其左右子树是否存在,若存在,再遍历其左右子树,此时就不用再进行根判断了,根判断的代码只在进入函数时有效执行。我们可以看出,如果root为NULL时,返回0,否则都是向上返回左右结点之和,那么我们就可以直接相加,还要加上它本身。而且在验证的时候还有一个小插曲:当我发现实际和输出不对等时,我没有怀疑代码的正确性,而是发现我的二叉树图画错了。我们看我们的二叉树其实是非常丑的,但是我们通过验证也证明了我们代码的正确性。结点的操作发生在遍历其。

2023-12-02 16:04:26 976

原创 一篇博客读懂完全二叉树——堆

2023-11-30 17:30:38 820

原创 你好python!——python中的函数与数据容器

注意:如果元组只有1个元素,这个数据后面要添加逗号序列是指内容连续有序可使用下标索引的一类数据容器,列表、元组、字符串,均可视为序列因为集合是乱序的,所以集合不支持下标索引访问哦!添加新元素功能:将指定元素添加到集合内语法:集合.add(元素)结果:集合本身被修改,添加了新元素移除元素功能:将指定元素从集合内移除语法:集合.remove(元素)结果:集合本身被修改,移除了该元素随机取出元素功能:从集合中随机取出一个元素语法:集合.pop()

2023-11-27 09:10:31 888

原创 Linux常见指令(1)

我们在XShell中输入以下指令,再输入密码就可以远程连接到我们的主机。有的设备可能还需要搭配Fn。

2023-11-26 22:44:54 1378

原创 栈和队列OJ题目——C语言

在去栈首的时候,我们取到的是队列的最后一个元素,首先想到的肯定是返回我们导完数据后剩的那个元素,直接CV上面的代码,但是我们要能想到在写队列时,我们写过取队尾函数QueueBack,我们可以直接进行判空操作,返回不为空队列的最后一个元素。在删除时,我们也可以使用QueueSize对队列数据的个数进行判断,用QueueFront进行导入队头操作,此时该队列承担的是导数据的任务, 同时导入队头的同时不要忘记要将队头Pop出去。这就是我们的数量不匹配,我们可以在最后进行一个判空,如果最后栈没空,说明数量不匹配。

2023-11-25 13:22:41 1152

原创 一篇博客读懂双向链表

链表的销毁当然也是一个结点一个结点free的,而且因为我们的pHead是哨兵位,我们设置的cur应该从pHead的下一个结点开始free,同时,通过对while条件的设置,保证pHead不被重复free。从定义的结构体我们就可以轻松想到我们的链表应当如何初始化,那就是让next和prev都指向它本身,此外,还要记住既然是链表,那么我们的结点都是动态开辟出来的。我们的头删也是要不包括头结点的,所以我们也要额外判断一下pHead的next。​​​​​​​我的源代码:登录 - Gitee.com。

2023-11-20 18:15:33 75

空空如也

空空如也

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

TA关注的人

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