- 博客(41)
- 收藏
- 关注
原创 【刷题总结】
场景一:对于一串连续的数据,找出具有某种特征的数据移动到结尾,并保证剩余元素相对位置保持不变,通常对于字符串和数组。应用算法:双指针--属于数组划分,数组分块。例:移动零题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台题目分析:双指针,指针cur用于遍历数组中每个元素,指针dest用于标识不满足题目特征的元素的最后一个元素,实现过程是,cur初始化为0,dest初始化为-1,遍历元素过程中,遇到符合特征的元素,不操作,仅cur++,遇到不符合特征的元素,则先++d
2024-08-28 14:43:50 186
原创 【基于多输出方向的同步&异步日志系统】
日志系统的作用是记录程序运行状态信息,以便程序员能随时根据状态信息对系统运行状态进行分析,能够让用户在运行测试程序时非常简便的进行日志的输出及控制。本文提供的日志系统支持多落地方向且支持拓展新的落地方向,同时即实现了同步日志器又实现了异步日志器
2023-09-09 16:48:19 747
原创 【C++进阶:哈希--unordered系列的容器及封装】
本文主要通过学习哈希表底层原理及模拟实现,从而完成了对unordered_系列容器的封装及测试
2023-07-30 19:04:47 323
原创 【C++进阶:map和set】
在C++初阶阶段,已经学习并总了STL中的部分容器,比如:vector、list、deque、forward_list等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别?关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高。
2023-07-27 17:44:38 264
原创 【C++进阶:继承】
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用
2023-06-21 13:16:09 68
原创 【探究反向迭代器的实现,再次理解适配器模式】
之前在模拟实现list、vector等的迭代器的时候,只实现了它们的正向迭代器,是因为标准库里在实现反向迭代器时,并不像我们想象的那么简单,不是说直接修改一下正向迭代器的代码,而是在对正向迭代器进行相应的封装
2023-06-07 18:18:48 71
原创 【C++初阶(7):stack(栈)和queue(队列)】
标准库提供了三种顺序容器适配器:stack、queue、priority_queue。适配器是标准库中通用的概念,包括容器适配器、迭代器适配器和函数适配器。本质上,适配器是使一事物的行为类似于另一类事物的行为的一种机制。容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现。例如,stack适配器可使任何一种顺序容器以栈的方式工作。
2023-05-31 01:41:24 170
原创 【手撕红黑树!>_< !】
红黑树,本质上也是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。
2023-05-16 18:16:44 79
原创 【剑指offer经典算法题目总结】
本篇题目主要来源于剑指offer一书,是面试中高频率出现的问题,具有很强的复习参考价值,可作为面试前速览,其中不仅有题目解法,还有详细的分析过程,快来为你的面试准备锦上添花吧!
2023-05-16 12:01:35 283
原创 【平衡搜索二叉树的实现:手撕AVL!!】
我们学习的map/multimap/set/multiset等容器有个共同点是:其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。
2023-05-14 20:27:53 105
原创 【C++进阶(3):进阶二叉树】
前面在C初阶数据结构学习阶段,我对二叉树建立了初步认识,并总结了运用其解决一些问题的方法,但实际上二叉树是一个十分值得深入研究的结构,在有了一定的C++基础的条件下,我将基于C++继续总结二叉树相关的一些更复杂的问题,本篇涉及到的二叉搜索树主要是为后面学习map和set的特性而准备,同时二叉树部分在笔试面试也是考察的重要部分之一,笔记最后也会总结一些复杂的二叉树相关OJ题
2023-05-12 11:31:14 87
原创 【C++初阶(6):list】
1. list是可以在其任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,以让其更简单高效。4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。
2023-04-22 21:28:08 64
原创 【C++初阶(4):String】
C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想【面向对象编程(英文Object Oriented Programming)】,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、快捷,基本都使用string类,很少有人去使用C库中的字符串操作函数。
2023-03-03 21:22:45 177
原创 【C++初阶(1):C++入门】
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
2023-02-11 17:37:03 224
原创 【二叉树的顺序结构及实现】
有了基础铺垫我们知道普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。
2022-12-30 17:26:48 1837
原创 【数据结构初阶(2):顺序表、链表】
上节,我们知悉数据结构概念,它是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。简而言之:它的作用是用于内存中管理数据------增删查改。而其中最基础的就是线性表,本节将详细实现线性表中两种基础的数据结构:顺序表、链表。
2022-11-06 21:32:02 269
原创 【文件操作:C语言进阶(Day6)】
之前我们实现了通讯录,但可以发现,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,使用起来并不方便。 我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
2022-10-13 09:07:18 81
原创 【动态内存管理:C语言进阶(Day5)】
有时候我们需要的空间大小在程序运行的时候才能知道,那数组在编译时开辟空间的方式就不能满足了,这时候就只能试试动态存开辟了。
2022-10-10 19:33:07 271
原创 【结构体的应用:实现一个简单通讯录的基本功能(内涵静态版、动态版、文件操作版等多种实现方法)】
怎么实现简单的通讯录?包括增删查改排序等功能的实现快来看看吧~
2022-09-29 20:23:29 273
原创 【指针进阶:C语言进阶(Day2)】
1. 字符指针2. 数组指针3. 指针数组4. 数组传参和指针传参5. 函数指针6. 函数指针数组7. 指向函数指针数组的指针8. 回调函数9. 指针和数组面试题的解析
2022-08-11 11:31:39 484
原创 【数据结构初阶(1):算法的时间复杂度和空间复杂度】
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 简而言之:它的作用是用于内存中管理数据------增删查改。类似的我们还听说过数据库,它与数据结构作用类似,只不过其作用对象是磁盘。...
2022-07-30 19:53:46 323
原创 【结构体:编程小白与C语言正式建交的第六天(打地基阶段6)】
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。在实际生活中,实际上有很多的复杂对象,他要用各种数据来描述,例如,描述一个人,需要描述他的姓名、年龄、性别、电话号码、身高、体重等等,此时定义的单一的变量类型是不足以描述它的,这个时候就有了结构体,我们可以把结构体当作是一组用于描述同一对象的不同数据类型的集合...
2022-07-28 11:12:32 67
原创 【指针:编程小白与C语言正式建交的第五天(打地基阶段5)】
1. 指针是内存中一个最小单元的编号,也就是地址2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量
2022-07-27 19:17:24 141
原创 【函数:编程小白与C语言正式建交的第二天(打地基阶段2)】
在计算机科学中,可以把它定义为一个子程序,子程序是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。无论是哪里的函数,我们都可以把它看作某一个工厂,输入或传入的内容将其看作是原料,输出(传出)的看作是产品。...
2022-07-16 11:36:02 101
原创 【分支语句和循环语句:编程小白与C语言正式建交的第一天(打地基阶段1)】
C语言中的把语句分为以下五种类型:表达式语句、函数调用语句、控制语句、复合语句、空语句本章节主要介绍控制语句
2022-07-11 23:27:13 481 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人