自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类和对象(上)

/类体:由成员变量和成员函数组成class为定义类的关键字,className为类的名字,{}中为类的主体,注意类定义结束时后面的分号不能省略;类体中:类体中的变量称为类的属性或成员变量;类体中的函数称为类的方法或成员函数;类的两种定义方式:1.声明与定义不分离,全部在类体中(注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理)class Apublic:private:int _a;int _b;

2024-05-19 16:50:52 619

原创 Linux基本指令

i节点(inode)是一个数据结构,用于存储文件或目录的元数据信息,包括文件的权限、所有者、大小、时间戳等。指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。.. 也是一个特殊目录,表示上级目录任何一个目录都有 . 和 .. ,新建的目录也是如此,所以cd .. 才能返回到上级目录。命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。通配符*:表任意内容;

2024-05-19 00:46:19 975

原创 C++ -- 函数重载 、引用、 内联函数、auto、基于范围的for循环、指针空值nullptr

是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。 C语言是不支持同名函数存在的,C++支持同名函数存在,即为函数重载;a、函数重载需要在同一个作用域,如果在两个命名空间中(命名空间域)中分别定义两个同名函数,这两个函数不是函数重载;b、 形参列表不同(参数个数,参数类型,类型顺序);c、不能用返回值不同来重载函数,调用函数时会根据参数来调用对应的函数;在一些情况下:a

2024-05-09 01:03:19 606

原创 C++ -- 命名空间,输入输出,缺省参数

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间的名字一般在开发中是用项目名字做命名空间。int a = 1;int a = 2;int a = 1;int a = 2;//注意包含头文件//test.h。

2024-05-06 23:36:24 750

原创 CSS + HTML

<title>CSS简介</title><style>h1 {p {a {li {span {</style>层叠样式表样式表

2024-04-29 21:35:31 841

原创 HTML5(2)

定义列表一般用于网页底部的帮助中心。

2024-04-28 19:52:32 612

原创 HTML5(1)

网页制作思路:从上到下,先整体再局部,逐步分析制作分析内容->写代码->保存->刷新浏览器->看效果Vue.js(发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,可以高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。

2024-04-28 01:25:06 1911 4

原创 中缀表达式求值

但这通过已经构建好的二叉树再来进行计算的,要计算其他表达式时,再人为构建一颗树是非常麻烦的,所以可以通过表达式从左向右扫描,通过优先级来构建一颗数,这个过程是通过栈来实现的。1.扫描过程中,当前运算符优先级小于等于前一个运算符(栈顶的运算符)优先级时,代表当前运算符的的子树已经遍历完了,子树内的数字和符号合并计算成一个数值并加入栈内。2.当前运算符的优先级大于前一个运算符(栈顶的运算符)优先级时,代表子树还没有遍历完,直接将当前运算符入栈,等待后序操作。4.遇到’)‘时求出()内的值,并入栈。

2024-04-20 16:01:10 267 1

原创 数学知识--(欧拉函数,快速幂,扩展欧几里得算法)

本文用于记录个人学习,仅供参考。

2024-04-06 11:38:41 351

原创 数学知识--(质数,约数)

本文用于个人学习,仅供参考。

2024-04-04 22:55:59 1176

原创 哈希表(Hash Table) -- 用数组模拟--字符串前缀哈希

哈希表(Hash Table)是一种数据结构,用于存储键值对。它通过将键映射到表中的一个位置来实现快速的查找操作。在哈希表中,每个键都会经过一个哈希函数的计算,得到对应的哈希值,然后将键值对存储在哈希值对应的位置上。哈希表的主要特点包括:1. 快速的查找操作:通过哈希函数计算出键对应的位置,可以在常数时间内找到对应的值。2. 空间效率高:可以根据实际情况动态调整哈希表的大小,使得空间利用率高。

2024-04-01 22:05:13 900

原创 数组模拟堆

堆是一种特殊的树形数据结构,常用于实现优先队列。堆分为最大堆和最小堆两种类型,最大堆要求父节点的值大于等于子节点的值,最小堆要求父节点的值小于等于子节点的值。在堆中,通常使用数组来实现,具体实现时需要满足以下性质:1. 父节点 i 的左子节点在位置2* parent+1,右子节点在位置2* parent+2;子节点 child 的父节点parent位置 parent = (child - 1) / 2(下标从0开始)

2024-04-01 14:40:52 1147

原创 并查集

并查集(Disjoint Set)是一种数据结构,用于处理一系列不相交的集合的合并与查询问题。1. 合并(Union):将两个集合合并为一个集合。2. 查询(Find):确定一个元素属于哪个集合,通常用于判断两个元素是否属于同一个集合。并查集通常使用树结构来表示集合,其中每个节点表示一个元素,树的根节点表示集合的代表元素。通过路径压缩和按秩合并(没什么用)等优化方式,可以在近似常数时间内进行合并和查询操作。

2024-04-01 00:03:34 788

原创 Trie字典树

Trie(字典树)是一种树形数据结构,用于存储关联数组,其中键通常是字符串。Trie具有以下特点:1. 每个节点包含若干子节点(子节点数量取决于字符集的大小)。2. 从根节点到每个节点的路径上的字符连接起来形成该节点对应的字符串。3. 通常在叶子节点处存储与该字符串关联的值。在Trie中,查找、插入和删除操作的时间复杂度与字符串的长度有关,而与Trie中存储的数据量无关,因此Trie通常用于快速查找、前缀匹配等场景。Trie的基本操作包括插入、查找、删除等。

2024-03-31 22:58:31 328 1

原创 KMP字符串匹配算法

本文用于记录个人算法竞赛学习,仅供参考先来看一个问题对于这个问题,一般暴力做法是:遍历主串,以主串的每个元素为开头分别与模式串对比,遇到不匹配,主串走下一位,模式串重新开始 一 一对比,假设主串长度为n,模式串长度为m,那么时间复杂度是O(n * m)。使用KMP解决这个问题时间复杂度只需要O(n + m)。

2024-03-31 21:54:39 540

原创 用数组模拟单链表、双链表、栈、单调栈、队列、循环队列、单调队列

本文用于记录个人学习,仅供参考为什么要用数组模拟而不用现成的STL,因为用数组模拟效率会快一点,比如用结构体+指针的方式创建链表,new的效率会很慢,极端情况可能会超时,所以有时候需要用数组模拟。

2024-03-31 18:16:25 1177

原创 区间和并

1.对每个区间的左端点进行排序(升序)(也可以对每个区间的右端点进行排序,只不过操作不同而已)思路:用贪心的思想,一把箭尽可能射中多个气球,借用区间和并,计算弓箭的数量。区间合并指存在区间重叠(或者接壤),将这样若干个区间合并成一个区间。2.判断是否可以合并。

2024-03-31 16:17:42 159

原创 离散化

百度百科:离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:原数据:1,999,100000,15;处理后:1,3,4,2;原数据:{100,200},{20,50000},{1,400};处理后:{3,4},{2,6},{1,5};离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。

2024-03-31 15:45:44 422

原创 位运算

原理: -x == ~x + 1(取反加一),有x & (~x + 1), ~x会使原来的1变为0,0变为1,再+1会使~x最后一位0变(也就是x的最后一位1)为1,再将(~x + 1)&x就可以得到最后一位1。

2024-03-31 12:13:27 317

原创 前缀和与差分

本文用于记录个人学习,仅供参考。

2024-03-31 10:50:29 1233

原创 高精度(大整数)

当一个数的位数已经很大了(比如有10^6),常规的数据类型已经存不下了,那么这个时候就可以用数组来存,数组的每个元素代表数的每一位,且保持相对顺序。一般存储方式如图:数组下标从小到大存数的低位到高位,便于后序操作。

2024-03-31 00:10:14 306

原创 二分(二段性)

本文用于记录个人算法竞赛学习,仅供参考。

2024-03-30 22:08:14 573

原创 分治实现快速排序和归并排序

思想:确定分界点x,将小于分界点的值放在分界点的左边,将大于分界定的值放在分界点的右边,再递归处理两边的左右区间。步骤:1.确定分界点:分界定的确定是随机的,一般取中间点(mid)和左右(L,R)边界点2.调整区间:将小于分界点的值放在分界点的左边,将大于分界定的值放在分界点的右边(降序相反)3.递归:递归处理左右两边,重复上述操作调整区间的实现方式:1.可以开辟两个空间来存放分界点的值,然后再拷贝回去,但这样会额外消耗空间。

2024-03-30 20:25:52 858

原创 leetcode--接雨水(双指针法,动态规划,单调栈)

黑色的是柱子,蓝色的是雨水,我们先来观察一下雨水的分布情况:雨水落在凹槽之间,在一个凹槽的左右都会有两个柱子,两个柱子高度可能相同也可能不同,柱子的高低决定了凹槽的雨水的高度,雨水的高度等于两个柱子较低的高度。

2024-03-01 22:06:35 1175 3

原创 三数之和(哈希,双指针)

当a = -2,b = 1(第三个)时,由于-2,1,1组合已经有了,所以就不再需要b = 1的情况了,所以此时开始去重。nums[i] == nums[i - 1]),避免忽略了0,0,0的情况,外层循环i作为a,相当于a = nums[i], b = nums[left], c = nums[right].如果去重条件是(nums[i] == nums[i + 1]),会出现忽略0,0,0的情况;b这里的去重有些复杂,并不是与a的去重一样(前后相等就去重),举个例子-2,1,1,1。

2024-02-27 00:36:34 433

原创 十大经典排序算法

/Stack.h//栈(stack)//数据//容量int top;//栈顶,top初始化为0,则top为最后一个有效数据的下一位下标;top初始化为-1,则为最后一个有效数据下标}Stack;//初始化//销毁//入栈//出栈//调用栈顶//返回个数//判断是否为空栈//Stack.c//初始化assert(ps);//初始开辟容量4个if (ps->arr == NULL)//开辟失败");exit(1);// 初始开辟容量4个。

2024-02-04 22:57:32 892

原创 C语言实现控制台贪吃蛇项目

Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以便称之为Application Programming Interface,简称API函数。平时我们直接在编译器运行起来的窗口就是控制台程序,在实现贪吃蛇之前,我们要先将终端属性设置一下(如果已经是设置好的就不用设置了)

2024-01-31 16:07:29 989 1

原创 树--二叉树(C语言纯手凹)

二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。特点:1. 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。2. 二叉树的子树有左右之分,其子树的次序不能颠倒。

2024-01-29 18:09:27 1544 2

原创 线性表--队列

队列是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先 进先出FIFO(First In First Out);入队列:进行插入操作的一端称为队尾;出队列:进行删除操作的一 端称为队头;

2024-01-27 20:41:14 285

原创 线性表--栈

栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶;出栈:栈的删除操作叫做出栈。出数据也在栈顶。

2024-01-26 23:51:36 251

原创 有关链表的题目

要注意循环条件的前后顺序,&&会进行短路求值,如果写成(fast->next && fast),当链表节点为偶数个时,此时fast == NULL,很明显NULL->next是错误的。思路:创建一个新链表,给定两个指针遍历两条原链表,小的插入。当有剩余的链表时,直接将剩余的全部一起尾插到新链表中,无需一个一个尾插,因为原链表是有序的。思路:创建一个新链表,newhead指向新链表的头节点,newtail指向当前链表的尾节点;注意:会有一个原链表为空的情况,直接返回另一个原链表。

2024-01-26 16:54:12 375

原创 基于单链表实现通讯录项目

前面已经介绍过单链表的具体实现,基于单链表,只要修改节点数据类型,修改相应代码就可以实现通讯录的增删查改功能。

2024-01-24 23:31:06 559

原创 线性表--链表--带头双向循环链表

在一个节点中,存放着data数据,前驱指针和后继指针,所以是双向的,既可以从前往后遍历,也可以从后往前遍历;头节点充当哨兵位,所以使链表有了一个头,data不存放数据(通常初始化为-1),prev指向链表的最后一个节点,next指向第一个节点,使其整个链表成环,头节点不是第一个节点,当只存在一个头节点时,链表为空链表。

2024-01-24 17:48:11 708

原创 排列算法(递归实现)(1~n全排列)(字典序全排列)

我们要将它们排序,首先分为三种情况:三个数字分别作为第一个位置,那么就要将其放在第一个位置,然后再对后面剩下的数进行排列...很明显这样会重复上述操作,就可以用递归去实现。要跟上面一样,每个数字都要有机会排在第一个位置,同时实现字典序,就要通过三个数字对第一位置循环后移滚动实现,确保字典序最小。位置的替换可以使用swap函数实现,记得位置替换后要再一次换回来,确保每个数字都可以出现在第一个位置,避免了重复的结果。但可以发现上面只能进行全排列,并不能满足字典序全排列,这是为什么?不符合字典序,要怎么实现呢?

2024-01-23 22:27:35 456

原创 枚举算法(穷举法)(暴力法)

枚举是指在一定范围内将所有情况一一列举,再通过条件判断得到自己想要的答案;

2024-01-22 22:55:50 372

原创 线性表--链表--单链表(不带头单向不循环链表)

链表是一种物理存储结构非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,逻辑结构上呈线性。就如火车车厢之间的关系,可以通过挂钩链接,不用是再断开链接。

2024-01-22 16:24:13 394 2

原创 合并两个有序数组(三指针法)

要从nums1后面开始合并,从前面开始合并可能会覆盖掉数据,将l1和l2当前下标的值进行比较,大的排到l指向的位置,并且相应下标和l两个都要减一,直到nums2的元素全部合并到nums1为止。2.l1先小于0,则nums2的元素还没有合并完,且剩下的nums2元素均小于后面需要排入nums1位置的值,所以直接将nums2有序排入即可。l1是nums1的有效数据的最后一位的下标,即m - 1;l2是num2的有效数据的最后一位的下标,即n - 1;1.l2先小于0,则已经将nums2的元素合并完了;

2024-01-21 16:13:14 347

原创 移动元素(快慢指针法)

这样做的目的是,str遇到val值时,会直接跳过,dst将在原地待命,直到str后面遇到非val值时,再用dst将其覆盖,最终str遍历完毕,dst即为非val值的个数,由于dst <= numsSize,所以返回dst后可以根据dst创建循环的判断条件,打印出把val值覆盖之后的数组。直到str不再小于numsSize,即str等于numsSize,超出了nums的下标范围,结束str的遍历;str是快指针,dst是慢指针,str遍历数组,dst用于改变数组的值和返回非val的个数;

2024-01-21 15:28:29 386

原创 基于静态顺序表实现通讯录项目

【代码】基于静态顺序表实现通讯录项目。

2024-01-21 00:31:42 392

原创 基于动态顺序表实现通讯录项目

前面我们是这样定义动态顺序表的,SLDataType是存储数据的类型,那么将这个SLDataType类型替换成自定义的结构体类型,arr不就是结构体数组了吗,进而就形成了通讯录。对于通讯录,我们需要记录一个人的姓名,年龄,电话号码,性别,住址等,显然我们需要定义一个结构体来存储一个人的以上个人信息。由于数据类型不同,需要处理的方式也不同,所以需要对实现顺序表的函数进行调整,进而将顺序表的相关实现套用在通讯录中。上一篇博客介绍了如何实现动态顺序表,而本章将介绍如何实现通讯录。那跟顺序表有什么关系呢?

2024-01-20 21:26:50 383

空空如也

空空如也

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

TA关注的人

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