自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【LeetCode刷题集】--排序(三)

📝 算法刷题笔记:三道排序题解析 本文分享了三个基于排序的算法题解: 1️⃣ 第三大的数(414题):通过降序排序和去重处理,找到第3大数或最大数 2️⃣ 分发饼干(455题):贪心算法+双指针,用最小饼干满足最小胃口的孩子 3️⃣ 最长和谐子序列(594题):排序后滑动窗口寻找相邻差值为1的最长子序列 🔧 共同特点: 都使用qsort进行预处理排序 时间复杂度均为O(NlogN) 包含双指针、滑动窗口等技巧 💡 核心思想:排序是解决这类问题的有效预处理手段,配合适当的算法技巧可以高效解题。坚持每日刷

2025-08-11 17:27:55 633 3

原创 【数据结构初阶】--二叉树(六)

本文介绍了二叉树层序遍历和完全二叉树判断的实现方法。层序遍历通过队列实现,先入队根节点,每次取出队首节点并访问后,将其左右子节点入队。判断完全二叉树的方法同样借助队列:若遍历过程中遇到空节点后队列中仍有非空节点,则不是完全二叉树。文章提供了详细的代码实现(包括头文件和源文件)、图解说明和测试用例,验证了两种算法的正确性。这些二叉树操作是数据结构学习的重要内容,结合队列实现了广度优先的遍历方式。

2025-08-11 11:06:00 1037 7

原创 【数据结构初阶】--二叉树(五)

本文介绍了二叉树常用接口的实现方法,包括计算节点个数、叶子节点个数、第k层节点个数、树的高度以及查找特定值节点等。通过递归方式实现了各功能函数,并给出了完整的测试代码。文章首先优化了二叉树的创建方法,然后详细讲解了每个接口的实现思路和代码逻辑,最后展示了完整的头文件、源文件和测试用例。所有功能均通过测试验证,结果正确。文章还预告了下篇将介绍的层序遍历和判断完全二叉树的内容。代码实现充分体现了递归思想在二叉树操作中的优势。

2025-08-11 09:17:19 616

原创 【数据结构初阶】--二叉树(四)

本文介绍了链式结构二叉树的创建与遍历实现。文章首先讲解了如何使用链表表示二叉树,定义节点结构并手动创建示例树。重点详细阐述了前序、中序、后序遍历的递归实现,通过图示展示了每种遍历方式的函数递归栈帧过程,帮助读者理解递归逻辑。前序遍历顺序为根-左-右,中序为左-根-右,后序为左-右-根。最后提供了完整的代码实现,包括头文件、源文件和测试用例。文章强调通过画递归栈帧图来理解遍历过程,为后续二叉树操作打下基础。

2025-08-10 15:34:47 701 2

原创 【数据结构初阶】--二叉树(三)

本文探讨了堆排序中的两种建堆算法:向上调整和向下调整。通过数学推导证明,向上调整建堆时间复杂度为O(n*logn),而向下调整仅需O(n),因此后者更优。随后重点讲解了Top-K问题的解决方案:使用堆结构处理大数据量时的高效筛选方法,包括建立小/大堆、比较剩余元素等步骤,并提供了完整的C语言实现代码。最后通过测试验证了该算法的有效性,为处理海量数据前K个极值问题提供了实用方案。

2025-08-10 10:39:31 749 2

原创 【数据结构初阶】--二叉树(二)

本文介绍了堆(Heap)数据结构的实现与应用。主要内容包括:1.堆的概念与结构,分为大堆和小堆;2.堆的基本操作,包括初始化、销毁、插入(使用向上调整算法)、删除(使用向下调整算法)、取堆顶等接口实现;3.两种堆排序方法:第一种基于堆数据结构实现,第二种利用堆思想实现(推荐);4.代码展示,包含Heap.h头文件定义、Heap.c实现文件及测试用例。文章重点讲解了堆的插入和删除操作中的向上和向下调整算法,并通过示例演示了堆排序的实现过程。最后强调动手画图理解的重要性,为后续学习二叉树等内容奠定基础。

2025-08-09 17:47:56 738 2

原创 【数据结构初阶】--树与二叉树预备篇

本文介绍了树与二叉树的基本概念和结构。树是一种非线性数据结构,由根节点和互不相交的子树组成,具有层次关系。详细讲解了树的专业术语(如度、层次、深度等)和表示方法(孩子兄弟表示法)。重点介绍了二叉树的特性:每个节点最多有两个子节点,且子树分左右次序。特殊二叉树包括满二叉树和完全二叉树。文章还说明了二叉树的两种存储结构:顺序存储(适合完全二叉树)和链式存储(二叉链)。作为数据结构系列的一部分,后续将深入讲解二叉树的实现。(149字)

2025-08-09 11:14:23 1057 2

原创 【数据结构初阶】--栈与队列(队列)

【摘要】本文详细介绍了队列的数据结构实现,包括基本概念、核心操作和完整代码示例。文章首先阐述了队列"先进先出"的特性及其链表实现方式,重点讲解了入队(QueuePush)和出队(QueuePop)操作的具体实现逻辑,分析了单节点和多节点情况下的处理方式。同时展示了获取队首(QueueFront)、队尾数据(QueueBack)以及计算队列大小(QueueSize)的方法,并提供了完整的队列销毁(QueueDestroy)实现。通过Queue.h头文件定义和Queue.c功能实现,配合te

2025-08-08 11:01:12 922 1

原创 【数据结构初阶】--栈与队列(栈)

本文介绍了栈的基本概念和实现方法。栈是一种后进先出(LIFO)的线性表,作者通过数组实现了栈结构,详细讲解了栈的初始化、销毁、入栈、出栈、取栈顶元素等核心操作。代码实现包括Stack.h头文件定义、Stack.c功能实现和test.c测试用例,完整展示了栈的各个接口功能。文章还比较了数组和链表实现栈的优劣,强调数组实现的空间效率优势。最后提醒读者要通过画图加深理解,为后续学习队列做准备。整体内容清晰实用,适合数据结构初学者学习参考。

2025-08-08 09:32:00 1027 4

原创 【数据结构初阶】--双向链表(二)

本文详细介绍了双向链表的实现方法,包括尾插、头插、尾删、头删、查找、指定位置插入/删除等核心操作。通过代码示例展示了每个接口的具体实现步骤和注意事项,并提供了完整的代码实现。文章还对比了顺序表与链表的区别,帮助读者理解双向链表的优势。作者以清晰的逻辑和详细的注释,为读者呈现了双向链表的完整实现过程,适合数据结构初学者学习参考。文中强调通过画图辅助理解链表操作的重要性,鼓励读者坚持练习以掌握链表的核心概念。

2025-08-07 10:39:33 627 1

原创 【数据结构初阶】--双向链表(一)

摘要:本文介绍了链表的8种分类方式(带头/不带头、单向/双向、循环/不循环),重点讲解带头双向循环链表的实现。内容包括节点结构定义、头节点(哨兵位)初始化方法,并提供了部分代码实现(List.h和List.c)。作为单链表的延续,本文为后续完整实现双向链表接口打下基础,适合数据结构初学者参考学习。(字数:150)

2025-08-07 09:10:02 828 2

原创 【数据结构初阶】--单链表(二)

本文详细介绍了单链表的基本操作实现,包括查找、指定位置插入/删除等核心接口。主要内容包括:1)单链表查找函数的实现与测试;2)在指定位置前/后插入节点的实现方法及注意事项;3)删除指定位置节点及其后继节点的实现;4)单链表的销毁操作。文中通过完整代码示例(包含.h、.c和测试文件)展示了每个接口的具体实现,并配有测试结果验证。作者强调画图理解和亲手实践的重要性,为后续学习双向链表等数据结构打下基础。文章结构清晰,代码注释详细,适合数据结构初学者循序渐进地学习单链表操作。

2025-08-06 16:22:10 965 4

原创 【数据结构初阶】--单链表(一)

本文介绍了单链表的基本概念和基本操作实现。主要内容包括:1. 单链表概念及其与顺序表的区别,解决了顺序表插入删除效率低、增容消耗大和空间浪费的问题;2. 单链表节点的定义和结构;3. 单链表的基本操作实现:打印、尾插、头插、尾删、头删等接口函数;4. 每个操作的具体实现步骤和注意事项,如保持头指针不变、二级指针传参等;5. 完整的代码展示和测试用例。文章强调通过画图理解链表操作的重要性,并提供了往期回顾链接,为数据结构学习打下基础。

2025-08-06 11:21:58 689 3

原创 【LeetCode刷题集】--排序(二)

摘要:本文介绍了三道LeetCode排序算法题的解法和思路。1)合并两个有序数组:通过从后向前遍历两个数组,将较大元素依次放入结果数组;2)丢失的数字:先排序数组,再寻找下标与元素不匹配的位置;3)找不同:计算两个字符串字符ASCII码之和的差值。文章提供了详细的代码实现和复杂度分析(O(N)或O(NlogN)),适合初学者练习基础排序算法。作者建议坚持每日刷题积累算法能力,并附上了相关知识点链接供读者参考。

2025-08-05 17:43:01 998

原创 【数据结构初阶】--顺序表(三)

【数据结构学习笔记】顺序表操作全实现 本文完整实现了顺序表数据结构的基本操作,包括: 查找功能:遍历数组查找元素,返回下标或-1 指定位置插入:移动元素腾出位置后插入新数据 指定位置删除:覆盖目标位置数据并前移后续元素 修改操作:直接修改指定位置的值 销毁操作:释放内存并重置参数 每个操作都提供了代码实现和关键注意事项,并附有完整的测试案例。文章最后给出了完整的.h和.c文件代码,适合数据结构初学者系统学习顺序表的实现原理。通过这篇内容,读者可以掌握顺序表的核心操作实现方法。

2025-08-05 10:55:41 766 3

原创 【数据结构初阶】--顺序表(二)

本文详细讲解了顺序表的实现方法,重点介绍了尾插、头插、尾删和头删四个核心操作。内容包含:1)尾插操作的动态扩容机制,采用2倍扩容策略;2)头插操作需要整体后移元素;3)尾删只需修改size值;4)头删需要前移元素。文中提供了完整的C语言实现代码,并通过测试用例验证了各功能的正确性。最后分析了时间复杂度:尾插/删为O(1),头插/删为O(n),说明顺序表更适合频繁操作尾部数据的场景。作者预告后续将继续完善顺序表的其他操作接口。

2025-08-05 09:43:27 846 1

原创 【LeetCode刷题集】--排序(一)

本文分享了LeetCode刷题集中三道简单排序类题目的解法,适合算法初学者入门练习。题目一使用qsort;同归于尽消杀法;找出数组中出现超过半数的元素;题目二通过qsort排序后比较相邻元素判断是否存在重复;题目三利用qsort排序字符串后比较是否构成字母异位词。文章详细讲解了qsort函数的使用方法,包括参数解释和cmp函数实现,并提供了完整的代码实现。建议读者结合作者之前关于算法复杂度和字符串函数的博客进行知识补充,坚持每日一题提升算法能力。

2025-08-04 18:34:01 739 1

原创 【数据结构初阶】--顺序表(一)

本文介绍了顺序表的相关知识,包括线性表概念、顺序表的结构与分类。重点讲解了静态和动态顺序表的实现方式,并通过代码示例展示了动态顺序表的初始化过程。文章强调将代码分为头文件、实现文件和测试文件的模块化编程方法,并提醒读者注意传址调用的重要性。作者建议读者配合图表理解概念,养成边写代码边测试的好习惯。本文是数据结构系列的第二篇,后续将深入讲解顺序表的插入删除等操作实现,文末附有相关C语言知识的回顾链接。

2025-08-04 16:27:36 1100 3

原创 【数据结构初阶】--算法复杂度详解

数据结构(Data Structure)是计算机存储,组织(增删查改)数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。没有一种单一的数据结构对所有用途都有用,所以我们要学习各式各样的数据结构,如:线性表,树,图,哈希等。

2025-08-04 12:45:14 1469

原创 【C语言】文件操作超详解(全)

程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows 环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

2025-06-05 13:43:44 1392 1

原创 【C语言】动态内存管理(详解版)

动态内存分配的原因:但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知 道,那数组的编译时开辟空间的方式就不能满足了。动态内存分配的意义:C语言引入了动态内存开辟,让程序员自己可以申请和释放空间,就比较灵活了。

2025-06-02 13:35:00 1362 1

原创 【C语言】:字符串函数超详解(10个最重要函数)

这与我们分析的结果恰恰相反,可这是为什么呢?大家可以回归到上面的strlen函数使用时的注意事项,strlen函数的返回值类型是size_t,是一个无符号整型,那这里strlen(arr1)-strlen(arr2)可能是一个负数吗?很显然是不可能的

2025-05-22 16:19:21 1283 1

原创 【C语言】指针超详解版(入门必看!)

函数指针的本质还是一个指针,它是指向函数的指针,函数指针的类型由函数的返回值类型和函数参数组成,可以定义如下:函数返回值类型(*指针变量名)(函数参数)给大家举个例子就明白了return x+y;int b=20;return 0;函数指针数组是存放函数指针的数组,它的写法是这样的函数返回值类型 ( *指针变量名[ ] )(函数参数类型)|_______代表数组的个数(函数的个数)int main()//p是函数指针变量。

2025-05-14 16:08:23 1682 7

原创 如何用C语言写出你自己的第一款游戏-----扫雷

我们可以定义一个win,如果win<=row*col-EASY_COUNT就说明我们的雷还没有排查完毕,排查一个不是雷的话我们就win++,继续这个循环,但如果用户输入了两个一模一样的坐标,我们就可以提示用户说这个坐标已经被排查过了,如果win==row*col-EASY_COUNT就说明我们成功了,但如果用户失败了,我们也要给他打印出来我们的mine数组给用户看一下我们雷的位置,让用户知道自己真真正正的排雷错误了,我们设置好雷的信息后我们可以先尝试打印一下mine数组看一下我们的10个雷是否设置成功了,

2025-04-22 16:41:00 1536

原创 数组strlen和sizeof常见误区

我来跟大家解释一下:这里我们数出来arr1数组有15个元素,所以对应的下标依次是0-14,而我们使用sizeof时计算的是16,所以要对应到相应的下标就要-2,而strlen计算的是结果为15,所以对应的下标就要用strlen-1结果才正确。这里呢我们看到sz的输出值为7,而len的输出值为6,这与我们解释的相符打击一定要牢记他们的区别,在做题中大家往往会忽略这些小的细节。strlen计算的是有效的元素个数(\0之前的元素个数)strlen计算的是有效的元素个数(\0之前的元素个数)这里我也给大家注释了。

2025-04-18 16:59:37 354

原创 C语言-分支循环break和continue误区

我们知道c语言中有三种循环1.while循环2.for循环3.do while循环。在循环中经常出现break和continue这两个跳出循环的操作,我们如何区分break和continue?以及他们在循环中的误区呢?

2025-04-14 10:47:14 836 5

原创 web前端基础

然后我们还可以看到最上方网页名字是《我是标题》这里所发挥作用的标签就是<title></title>标签了。这里我们可以看到打开网页之后内容为“我打羽毛球真厉害”,这里就是<body></body>标签的作用。接下来给大家看一下最基础的网页(注意:我们要创建一个文本文档,把后缀改成html)然后我们需要在我们创建的.html的文件里打开,即图一,打开后就是这个样子。这是我的第一篇博客,以后我会更加努力,争取帮到更多的人!我们改成.html的后缀后我们就可以看到图标变成了浏览器的样子。

2025-04-11 10:13:13 340 3

空空如也

空空如也

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

TA关注的人

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