- 博客(76)
- 收藏
- 关注
原创 C++算法专题学习:栈相关的算法
本文介绍了C++中栈数据结构的基本概念、特性和常见应用。主要内容包括:1)栈的LIFO特性及基本操作;2)栈的变种实现(最小栈、双栈队列);3)栈在算法题中的应用(删除相邻重复项、字符串解码等);4)工程应用场景(撤销操作、函数调用等)。文章通过具体代码示例(如计算器、字符串处理等)演示了栈的使用技巧,并附有相关算法题解代码。适合从零开始学习栈算法的读者参考。
2025-09-08 20:44:02
454
原创 Python学习——条件语句和循环语句
使用场景示例代码说明循环 N 次循环 5 次,i 从 0 到 4指定起始和结束位置循环,i 从 2 到 7指定步长(递增)循环,i 为 1, 3, 5, 7, 9指定步长(递减/倒序)循环,i 为 5, 4, 3, 2, 1遍历序列索引通过索引i来访问列表lst的元素。
2025-09-08 13:16:19
474
3
原创 C++算法学习——字符串
字符串是编程中最基本的数据类型之一,用于表示文本信息。它是由零个或多个字符组成的序列,通常用单引号(')或双引号(")括起来表示。
2025-09-07 11:55:43
915
1
原创 C++算法专题学习——分治
分治(Divide and Conquer)是一种重要的算法设计策略,其核心思想是将一个复杂的问题分解为若干个规模较小但结构与原问题相似的子问题,递归地解决这些子问题,然后将子问题的解合并得到原问题的解。
2025-09-05 23:17:03
661
6
原创 C++算法专题学习:模拟算法
本篇内容我们将学习C++算法的下一个主要算法思想:模拟。很多人将「模拟算法」误解为最简单的“照着做”,从而忽视了其背后蕴含的深刻计算机科学思想——。事实上,每一次成功的模拟,都是一次出色的建模过程。它要求我们首先在脑中或纸上建立一个,这个模型需要精准地反映题目的所有规则和约束。然后,我们再用编程语言的数据结构(如数组、链表、状态机)和控制流(循环、分支)将这个抽象模型“实例化”。这个过程,与软件工程中的系统设计何其相似!
2025-09-03 19:45:39
556
4
原创 C++算法学习:位运算
在前面C语言的部分中,我们已经学习并了解了位置运算的相关内容。想详细了解的可以参考以上这篇代码。而接下来我们将就位运算的思想来进行算法练习相关算法代码已经上传至作者的个人gitee中。
2025-09-02 15:12:47
902
4
原创 前端学习——JavaScript基础
JavaScript (简称 JS) 是一种高级的、解释型的编程语言。它最初被设计用于让网页“动起来”,如今已发展成为一门功能全面、无处不在的编程语言,是 Web 技术的三大核心之一(另外两个是 HTML 和 CSS)。如果一个变量没有被初始化过, 结果就是 undefined, 是 undefined 类型var a;undefined 和字符串进行相加, 结果进行字符串拼接undefined 和数字进行相加, 结果为 NaN。
2025-08-31 15:02:10
1651
5
原创 前端学习——CSS
CSS是层叠样式表 (Cascading Style Sheets),能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离选择器名称作用语法特点与说明通配选择器选择页面上的所有元素。1. 权重最低 (0,0,0,02. 常用于重置所有元素的默认样式(如marginpadding3. 效率较低,应谨慎使用。元素选择器选择指定的HTML标签元素。元素名如divph11. 权重为 (0,0,0,12. 用于设置同一类标签的基础样式。类选择器。
2025-08-31 10:20:04
891
5
原创 前端学习——HTML
在信息技术领域,‘前端’(Front-End)特指软件系统中直接面向最终用户、负责呈现信息与处理交互的部分。其核心职责在于实现用户界面(UI)与用户体验(UX),将业务逻辑和数据通过视觉化、可操作的形式有效传达给用户。前端开发聚焦于用户感官可直接触及的层面,包括布局结构、视觉样式、动态效果及交互逻辑的实现。生活中常见的前端主要分为:Web页面、PC端程序页面、移动端APP页面HTML 语言是超文本标记语言超文本例如:文本、声音、图片、视频、表格、链接标记:由许许多多的表现组成。
2025-08-26 17:06:03
750
6
原创 C++算法学习专题:二分查找
算法思路:利用二段性1、先查找区间左端点x<t时,left=mid+1,[left,right]x>=t时,right=mid,[left,right]细节处理:(1)循环条件left<right,原因如下:left=right的时候就是结果,不需要判断,判断就会陷入死循环(2)求重点的操作两种求法:区别:数组为偶数的时候第一种为靠左的位置,第二种为靠右的位置极端情况下(如下)第二种方法就会死循环2、查找区间右端点x<=t时,left=mid,[left,right]
2025-08-24 19:28:58
817
8
原创 力扣习题:基本计算器
特性中缀表达式 (Infix)后缀表达式 (Postfix) / 逆波兰 (RPN)前缀表达式 (Prefix) / 波兰 (PN)操作符位置在操作数之间在操作数之后在操作数之前括号需求必需(消除歧义)不需要不需要优先级需求必需(确定运算顺序)不需要(顺序隐含)不需要(顺序隐含)人类可读性最好(最自然)较差较差计算机友好度最差(解析复杂)很好(栈,左->右扫描)很好(栈,右->左扫描)计算扫描方向无固定方向 (需解析)左 -> 右右 -> 左别名逆波兰表达式 (RPN)
2025-08-15 22:09:14
1031
6
原创 数据结构学习之排序
排序:所谓排序,就是使⼀串记录,按照其中的某个或某些关键字的⼤⼩,递增或递减的排列起来的操作。排序的应用数据库查询优化:数据库索引通常采用B树等数据结构,需要高效的排序算法来维护数据的有序性数据分析:在统计分析和数据挖掘中,排序后的数据更便于进行各种聚合计算和模式识别搜索引擎:网页排名(PageRank)需要对海量网页进行排序,以提供最相关的结果图形处理:在计算机图形学中,Z-buffer算法需要对多边形进行深度排序操作系统:进程调度算法如最短作业优先(SJF)需要对进程进行排序电子商务。
2025-08-14 17:40:10
867
7
原创 C++学习之数据结构:红黑树
红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表⽰结点的颜⾊,可以是红⾊或者⿊⾊。通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍,因⽽是接近平衡的。在实践当中,红黑树的使用通常比AVL树更多。
2025-08-13 14:07:25
580
2
原创 (3万字详解)Linux系统学习:深入了解Linux系统开发工具
本篇内容我们将学习Linux基本开发工具:软件包、yum下载、vim编辑器、gcc\g++编译器、Makefile项目架构、git版本控制器、gdb调试器。
2025-08-11 21:55:56
1293
7
原创 C++算法练习:单词识别
/ 按字符串长度排序public:int main()// 使用仿函数排序// 输出:kiwi apple banana orangereturn 0;
2025-08-09 22:37:55
616
3
原创 C++学习之STL学习:map/set
前⾯我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间⼀般没有紧密的关联关系,⽐如交换⼀下,他依旧是序列式容器。顺序容器中的元素是按他们在容器中的存储位置来顺序保存和访问的。关联式容器也是⽤来存储数据的,与序列式容器不同的是,关联式容器逻辑结构通常是⾮线性结构,两个位置有紧密的关联关系,交换⼀下,他的存储结构就被破坏了。
2025-08-09 18:21:48
770
6
原创 C++学习之一些继承和多态相关的问题
C++学习之多态-CSDN博客多态(Polymorphism)是面向对象编程的三大核心特性之一,指同一操作作用于不同对象时产生不同行为的特性。多态分为静态多态和动态的多态。类型实现方式绑定时机典型应用静态多态函数重载、模板编译期运算符重载、函数模板动态多态虚函数、继承运行期接口设计、运行时类型处理其中动态多态必须要有:虚函数声明、派生类重写、基类指针/引用的调用//虚函数声明class Basepublic:virtual void func() { /* 基类实现 */ }
2025-08-06 21:13:18
1022
2
原创 C++算法学习专题:哈希算法
哈希表就是一个存储数据的容器。哈希算法(Hash Algorithm)是一种将任意长度的数据映射为固定长度值的单向加密函数。它通过特定的数学运算,将输入(也称为"消息")转换为一个固定长度的字符串(通常为十六进制表示),这个字符串称为哈希值或摘要。确定性:相同的输入总是产生相同的输出快速计算:对于给定数据,可以快速计算出哈希值不可逆性:从哈希值无法反推出原始数据抗碰撞性:很难找到两个不同的输入产生相同的哈希值雪崩效应:输入数据的微小变化会导致输出哈希值的巨大差异。
2025-07-29 21:52:05
665
6
原创 C++学习之继承
下⾯我们看到Person是基类,也称作⽗类。Student是派⽣类,也称作⼦类。(因为翻译的原因,所以既叫基类/派⽣类,也叫⽗类/⼦类)// 派生类 继承方式 基类public:int _stuid;//学号int _major;//专业当你不写继承方式的时候默认为私有继承方式。
2025-07-29 10:36:35
1250
4
原创 C++学习之深入学习模板(进阶)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】1. 模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2025-07-26 19:18:37
922
3
原创 Linux学习之Linux系统权限
权限是访问一种资源的时候决定我们能还是不能的问题。命令作用groups [用户名]查看用户的所有所属组id [用户名]显示用户 UID、GID 及组列表usermod -aG 组名 用户名将用户添加到附加组gpasswd -d 用户 组名从组中移除用户newgrp 组名临时切换用户的主组(需有权限)• ⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。• 如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读。
2025-07-21 23:57:36
1192
10
原创 Linux学习之认识Linux的基本指令
上一篇博客我们了解并学习了Linux的前世今生、如何安装Linux的云服务器以及利用Xshell登录Linux服务器。这篇博客我们将深入学习Linux,了解它的基础指令。
2025-07-18 21:25:49
1689
4
原创 C++学习之STL学习:stack\queue\priority_queue
官方文档:stack - C++ 参考stack的介绍queue - C++ 参考queue(单端队列)的介绍deque - C++ 参考deque(双端队列)的介绍deque的结构图官方文档:priority_queue - C++ 参考入数据随便入,出数据按优先级高的出队列。而数据大的优先级高,优先出队列int main()//数据大的优先级高;//优先级高的优先出队列pq.push(5);pq.push(3);pq.push(8);pq.push(1);
2025-07-18 09:49:17
690
6
原创 数据学习之队列
栈和队列是两个相似又相反的数据结构类型,但是受限于写栈的时候作者的时间和精力紧张就没有将两者放到一起,所以本篇我们将接着栈的内容继续深入学习与栈相对的另一种数据结构:队列。
2025-07-07 09:25:22
878
8
原创 C++学习之STL学习:list的模拟实现
数据结构学习之双向循环链表-CSDN博客),因为这个类中的成员我们都想要访问,如果想要方便写的话,可以用struct(struct中默认为公开),并且用命名空间封装//当我们不需要也不想要让访问限定符限制的时候//可以用struct来定义类,而不是用classT _data;//数据//指向下一个节点的指针//指向前一个节点的指针同时因为list模拟实现中使用了模板,所以函数的定义也只能在.h文件中()同时切记,模板只能给对应的类或函数使用,是“一次性”的,想再次使用一样的模板必须重新定义。
2025-07-06 18:40:14
902
5
原创 数据结构学习之双向循环链表
list.h//定义数据类型//双向链表结构//节点数据//指向前一个节点//指向下一个节点}LN;//申请结点//判断链表是否为空//这里必须要用到头文件<stdbool.h>//双链表的初始化//初始化1:void init_list(LN** phead);//头节点发生改变,传二级指针;不发生改变传一级指针// phead头节点在双向链表中除非销毁否则不会被改变,所以传一级指针//尾插//头插//尾删//头删//查找//pos之后插入。
2025-07-02 15:20:09
926
5
原创 C++算法学习专题:双指针
双指针(Two Pointers)是一种非常实用且高效的算法思想,主要用于处理线性数据结构(如数组、链表等)中的特定问题。这种技术通过使用两个指针(或索引)在数据结构中协同遍历,能够显著优化算法的时间复杂度。
2025-06-28 21:19:57
820
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人