自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【OJ题解】面试题三步问题

需要计算总共有多少种方法能爬上 ( n ) 级台阶。如果有疑问或改进建议,欢迎在评论区留言!使用动态规划减少重复计算,定义三个变量。小明在上楼时可以选择每次上。

2024-12-12 21:45:50 1040 95

原创 【OJ题解】最长回文子串

在展开的过程中判断字符是否相同。

2024-12-12 21:08:46 1030 32

原创 【C++】从零到一掌握红黑树:数据结构中的平衡之道

红黑树被广泛应用于许多领域,例如 C++ STL 中的 map 和 set,Java 的 TreeMap 和 TreeSet,以及 Linux 内核、数据库索引等。相比其他平衡树,红黑树调整代价更低,尤其适合插入和删除操作频繁的场景。在红黑树的插入过程中,为了保持红黑树的性质,需要结合旋转和变色操作进行调整。以下是插入过程中各种旋转和变色的前置条件及其原因的详细梳理。条件操作原因叔叔节点是红色变色修复连续红色问题,可能需要向上递归调整叔叔节点是黑色,左左情况右旋 + 变色。

2024-11-30 18:29:02 2715 52

原创 丹摩 | 基于PyTorch的CIFAR-10图像分类实现

推荐使用 Ubuntu 20.04,内存 16GB,硬盘 50GB。:选择 NVIDIA H800 或其他可用高性能 GPU。前面出现venu则表示已经激活虚拟环境了。启动实例后,获取实例的 IP 地址。

2024-11-24 18:10:47 1282 43

原创 【C++】从「树」到「平衡」:全面解密 AVL 树的奥秘与实现

AVL树是一种自平衡的二叉搜索树,它的名字来源于它的发明者G.M. Adelson-Velsky和E.M. Landis,两位前苏联的科学家在论文《An algorithm for the organization of information》中发表了它。

2024-11-24 16:29:47 2894 119

原创 【C++】二叉搜索树详解:插入、删除、查找的最佳实践与优化策略

二叉搜索树(Binary Search Tree, BST)是数据结构领域的基础知识,也是算法学习和技术面试中经常出现的主题。本文将通过 C++ 实现二叉搜索树,逐步讲解其插入、查找、删除等核心操作,并分析其设计细节与应用场景。本文通过代码详细实现了二叉搜索树的插入、查找、删除和遍历等操作,并逐步分析了其设计细节。二叉搜索树是一种高效且基础的数据结构,理解其实现与应用可以为算法学习和编程实践打下坚实基础。扩展阅读《算法导论》—— 二叉搜索树章节。

2024-11-23 15:12:05 3487 91

原创 【C++】高效数据操作神器:C++ STL 中 set 和 map 的完整指南

C++标准模板库(STL)中的set和map是开发中非常常用的关联容器,它们通过红黑树实现,提供了高效的查找、插入和删除功能。本文将结合详细的代码实例,带您全面了解这两个容器的使用方法及其特性。set与map的核心特性:高效的插入、查找、删除操作,复杂度为 ( O(\log N) )。适用场景set:需要去重并自动排序的场景。map:需要快速存取键值对的场景。multiset和multimap:允许重复数据的场景。关键操作和。统计:使用count快速统计元素数量。

2024-11-22 15:25:41 1233 8

原创 【C++】深入解析 C++ 多态机制:虚函数、动态绑定与抽象类的精髓

在C++编程中,多态是面向对象设计(OOP)的核心特性之一,也是提高代码灵活性和可扩展性。通过虚函数和动态绑定,多态可以是代码在运行时根据对象的不同调用实现各自的作用,适应更复杂的业务需求。然而多态不仅限于简单的继承和重写,它涉及虚函数表,动态绑定,菱形继承,虚继承等。多态是继承关系下的类对象,在调用同一函数的时候所产生的不同的行为定义:抽象类是包含一个或多个纯虚函数的类。由于包含纯虚函数,抽象类无法直接实例化。目的:抽象类用于作为接口或基类,提供公共的接口规范,而不需要自己实现具体功能。特点。

2024-11-21 13:43:50 1746 36

原创 【C++】深入理解 C++ 中的继承进阶:多继承、菱形继承及其解决方案

C++的继承机制提供了代码复用和层次结构的基础,但其灵活性也带来了复杂性。本文介绍了C++继承的多种使用方式和注意事项,如模板类的继承、基类与派生类的转换、菱形继承和虚继承的使用等。菱形继承可能导致数据冗余和访问冲突,虚继承可以解决这一问题,但会增加实现的复杂性。因此,在设计中要谨慎使用继承,尽量优先选择组合关系,以降低耦合性,提高代码的可维护性和复用性。

2024-11-20 16:24:16 1970 77

原创 丹摩 | 使用 DAMODEL 平台训练手写数字识别模型的详细教程

通过 DAMODEL 平台,你可以快速完成 MNIST 模型的训练与部署。未来,可探索更复杂的神经网络模型或多实例分布式训练。随着 DAMODEL 不断优化,开发者将能够更高效地完成 AI 项目。这篇博客将指导开发者如何使用 DAMODEL 平台训练一个基于 PyTorch 的手写数字识别模型(MNIST 数据集),同时标记出操作中的重点环节,帮助快速掌握流程。创建完虚拟环境以后前面会有(venu)通过这些资源,扩展你的深度学习技能!

2024-11-17 19:01:42 530 10

原创 【C++】深入 C++ 模板特化与非类型参数:提高代码效率的进阶指南

C++ 的模板功能极为强大,除了实现常见的泛型编程,模板还允许我们定义更加灵活和高效的代码。本文将深入讲解 C++ 中的非类型模板参数和模板特化,并结合代码示例展示这些高级模板特性的用法和适用场景。public:// 模板函数实现这样,任何包含的文件都可以直接实例化模板,从而避免链接错误。本文介绍了 C++ 模板的进阶用法,包含非类型模板参数、模板特化、全特化与偏特化的概念。通过这些模板特性,我们可以编写出更加灵活和高效的泛型代码,满足复杂的编程需求。

2024-11-17 16:39:44 1661 42

原创 【C++】深入理解 C++ 优先级队列、容器适配器与 deque:实现与应用解析

在 C++ 标准库中,优先级队列()是一种容器适配器,特别适合处理需要频繁访问最大值或最小值的数据集。同时,双端队列deque也是一种灵活的标准容器,支持高效的头尾插入、删除操作,被广泛用于实现队列、栈等数据结构。本文将深入讲解优先级队列、deque及其在容器适配器中的应用。优先级队列是一种基于优先级的特殊队列。默认情况下,C++ 的是最大堆,出队时总是返回最大元素。实现优先级队列的底层容器通常是vector或deque,其中deque是标准库提供的双端队列容器,支持高效的头尾插入和删除。

2024-11-16 16:53:12 1704 68

原创 【C++】深入理解自定义 list 容器中的 list_iterator:迭代器实现详解

通过,我们实现了自定义list容器的标准遍历方式。总结封装节点指针通过持有list_node指针_node来访问和移动链表节点。重载操作符和->用于访问节点数据。++和--用于迭代器的前进和后退。==和!用于迭代器的比较。与listlist_node的关系依赖list_node实现节点移动和数据访问。list通过提供统一的接口,使链表可以通过迭代器进行遍历、插入和删除操作。通过,自定义的list容器具备了与 STL 容器一致的遍历能力,使链表在不连续内存结构中也可以支持标准的迭代器操作。

2024-11-15 16:21:22 3717 93

原创 【C++】从零实现 C++ 自定义 list 容器:双向链表与迭代器深度解析

list容器需要一个迭代器来支持前向和后向遍历。我们设计一个,封装节点指针,并重载->++--等操作符。return tmp;return tmp;代码解读operator*和operator->:分别返回节点的值和地址。++和--:支持前后遍历。==和!:判断两个迭代器是否指向相同节点。本文详细介绍了如何从零实现一个 C++ 双向链表list容器,包括节点结构、迭代器设计、增删操作等。通过这篇文章的学习,希望你对list的底层实现原理有了更深入的理解。C++数据结构与算法:链表详解。

2024-11-15 08:08:32 2428 131

原创 丹摩|如何使用丹摩智算训练GPT文本生成

超友好:配备124GB大内存和100GB大容量系统盘,一键部署,三秒启动,简化AI开发流程。-资源丰富:从入门级到专业级GPU全覆盖,满足不同层次开发者的需求。性能强劲:采用自建IDC和全新GPU设备,确保高效、稳定的计算能力。价格实惠:提供超低价格的优质算力服务,注册即送优惠券,并定期推出各类社区优惠活动。

2024-11-10 20:39:09 1860 127

原创 【C++】STL中的list容器详解及常用函数用法

list高效插入和删除:在已知位置插入或删除元素的时间复杂度为 O(1),远高于vector的 O(n)。不支持随机访问:与数组不同,list不支持通过下标访问,因此需要通过迭代器进行遍历。双向链表:支持从头部和尾部同时遍历,方便实现一些特定算法。

2024-11-07 19:48:51 2298 166

原创 【C++】手动实现C++ vector容器:深入理解动态数组的工作原理

通过对各个函数的详细解析,我们手动实现了一个简化版的vector,展示了 C++ 标准库中vector的核心功能。希望通过这篇文章,大家能更好地理解vector容器。

2024-11-06 16:07:22 2446 51

原创 【OJ题解】在字符串中查找第一个不重复字符的索引

本文介绍了如何查找字符串中第一个不重复字符的索引。虽然双重循环方法能有效解决问题,但在大型数据下不够高效。哈希表优化方法可以大幅提升效率,适用于各种字符串长度。希望通过此文章能帮助大家更好地理解字符串不重复字符查找的实现。今后可以探索更多优化方法,如基于字符ASCII码的统计数组,以实现更快的查找操作。

2024-11-05 19:02:39 827 70

原创 【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案

本算法通过手动模拟乘法的方式实现了字符串表示的大数乘法。在未来优化中,可以考虑更高效的大数乘法算法(如Karatsuba算法),进一步降低时间复杂度。希望这篇文章能帮助大家更好地理解字符串乘法的实现原理,提升解决大数计算的能力。

2024-11-05 18:57:12 1297 102

原创 【OJ题解】C++实现反转字符串中的每个单词

这个算法的时间复杂度为 O(n),其中 n 是字符串s的长度。通过这种方式,我们不仅实现了题目的要求,还保持了原始字符串的结构与格式。

2024-11-02 17:58:54 810 141

原创 【OJ题解】C++ 把字符串转换成整数

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

2024-10-29 20:28:02 949 143

原创 【C++】vector(1)

😈个人主页: 起名字真南😈个人专栏:【数据结构初阶】 【C语言】 【C++】vector 基础知识以及相关资料代码演示:调试结果:如果我们想通过控制台来直观的看到每个vector的存储情况应该怎么做呢?因为vector支持迭代器遍历循环数组所以我们可以通过迭代器大打印出数组中的所有元素输出结果:代码演示:我们在使用find函数的时候使用的不是vector的成员函数,而是算法库**(algorithm)**实现的返回的是目标元素的迭代器,我们在使用迭代器进行操作的时候会涉及到迭代器失效的问

2024-10-23 19:41:04 2154 116

原创 【C++】string类(2)

👽个人主页: 起名字真南👽个人专栏:【数据结构初阶】 【C语言】 【C++】C++中的std::string类是标准库提供的高级字符串处理工具,支持动态内存管理和丰富的操作函数。为了加深对字符串类的理解,我们将从零开始模拟实现一个简化版的String类,涵盖字符串的创建、拷贝、连接、查找等基本功能。本篇文章的主要目的是展示如何设计和实现一个类似于std::string的类,并探讨其中涉及的内存管理和操作细节。为了和库函数中的string做出区分所以模拟实现的类名是String

2024-10-18 20:57:49 1427 172

原创 【C++】string类(1)

C++的string类其实是标准库std的一部分,并且定义在了< string >头文件中,封装了字符数组并且提供了很多便捷的方法。

2024-10-18 19:23:42 3222 156

原创 【C++】STL简介

C++ 标准模板库(STL,Standard Template Library)是 C++ 的核心组成部分,提供了一套通用的模板类和算法,可以高效地管理数据和执行复杂操作。STL 使 C++ 编程变得更强大、更灵活,同时简化了代码的编写,提高了开发效率。

2024-10-15 16:43:46 615 22

原创 【C++】模板初阶

class 类模板名//类内成员定义public:_size = 0;++_size;return 0;

2024-10-15 15:23:23 2377 150

原创 【C++】--内存管理

int main()//new/delete 和 malloc/free的最大的区别就是new/delete会自动调用自定义类型的构造函数和析构函数free(p1);delete p2;return 0;我们可以看到new和delete自动调用了A类型的构造函数和析构函数。new的原理1 调用operator new函数申请空间2 在申请的空间上调用构造函数,完成对象的构造delete的原理1 在空间上执行析构函数,完成对象中的资源清理工作。

2024-10-13 20:41:28 1613 42

原创 【C语言】--数组

😊个人主页: 起名字真南😋个人专栏:【数据结构初阶】 【C语言】 【C++】数组是一组相同类型元素的集合 :一维数组创建的基本语法如下:存放在数组中的值被称为数组元素,数组在创建的时候可以指定数组的大小和数组的元素类型。比如我们想创建某个班级里面10个学生的成绩,我们可以创建如下数组:2.2 数组的初始化2.3 数组类型数组算是一种自定义类型,去掉数组名剩下的就是数组类型arr1 的数组类型就是 int [5]ch 的数组类型就是 char [6]在C语言中提供了一个 [] 操作符

2024-10-13 17:19:09 1436 19

原创 【C++】--类和对象(3)

🤑个人主页: 起名字真南🤑个人专栏:【数据结构初阶】 【C语言】 【C++】运行结果如下:虽然Time类型的成员变量都是内置类型成员变量,并且在初始化的时候可以不写默认构造但是由于在Time中已经写了一个构造函数所以不会生成默认构造,而在Date类中作为了自定义类类型的成员变量如果没有在初始化列表中初始化就会调用他的默认构造,因为它没有默认构造就会报错。如果把初始化列表中的Time删除就会出现下面的错误:运行结果如下:3 static成员用static修饰的成员变量叫做静态成员变量

2024-10-09 19:37:46 2037 119

原创 【C语言】猜数字小游戏

我们学习完前面的循环以后可以写一个猜数字小游戏。

2024-10-08 16:57:41 1210 14

原创 【C语言】分支和循环(3)

😀个人主页:😁个人专栏。

2024-10-08 15:00:11 990 9

原创 【C语言】分支和循环(2)

🤔个人主页: 起名字真南😙个人专栏:【数据结构初阶】 【C语言】 【C++】下面是一些例子关系表达式通常返回0或1用来表示真假,其中1代表真0代表假。关系表达式常用于if或while结构注意相等运算符==和赋值运算符=非常容易混淆,另一个需要注意的就是关系运算符注意连用条件操作符的计算逻辑是:如果exp1 为假,exp1 为真,exp2 计算,计算的结果是整个表达式的结果;如果exp3 计算,计算的结果是整个表达式的结果。3 逻辑操作符 :|| ,&& ,!! 逻辑取反运算符(改

2024-10-07 16:49:43 804 9

原创 【C++】--类和对象(2)

👌个人主页: 起名字真南👆个人专栏:【数据结构初阶】 【C语言】 【C++】一个类我们不写的情况下会默认生成六个成员函数,分别是构造函数,析构函数,拷贝构造,赋值重载以及关于取地址对普通对象和const对象的重载。构造函数的特点 :如果我们将第一个无参构造函数和第三个全缺省构造函数注释掉编译器就会报错显示没有可用的构造函数。当我们使用无参的构造函数进行初始化时后面不需要加()否则编译器无法区分这里是函数声明还是实例化对象。当一个类类型的成员变量是自定义类型的时候例如上面的代码MyQueue类

2024-10-07 15:34:43 1183 34

原创 【C++】--类与对象(1)

1class为定义类的关键字,Stack为类的名字,{}内为类的主体,并且类在定义的时候不能省略后面的分号,类体中的内容称为类的成员,类中的变量叫做类的属性,也被称为成员变量,类中的函数叫做类的方法也被称为成员函数。2 为了区分成员变量和全局变量以及主函数之间的变量在类中定义成员变量的时候可以加上下划线 ‘ _ ’3 C++中struct也可以定义类,并且C++兼容C语言中struct结构体的用法,并且升级为类,最大的区别便是可以在内部定义函数。4 定义在类中的成员函数默认为inline。

2024-10-05 18:09:58 1080 78

原创 【C语言】--分支和循环(1)

C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构。我们可以用if、switch实现分支结构,实现循环结构。

2024-06-30 19:56:16 1455 147

原创 【C语言】--操作符详解

🌭个人主页: 起名字真南🍿个人专栏:【数据结构初阶】 【C语言】1.2 *1.3 /我们可以看到,虽然变量x的类型是 float(浮点型),但是6 / 4得到的结果1.0,而不是1.5.原因就在于C语言里面的都是整数除法,只会返回整数部分,舍弃小数部分。那如果想得到浮点型的运算结果应该怎么办呢?我们上面说到如果两端都是整数会执行整数除法,所以我们只需要将两端的操作数变成浮点型就可以得到浮点型的结果。两个运算数必须至少有一个浮点数。把6换成 6.0或者把 4换成4.0都可以得到想要

2024-06-28 22:25:43 1982 69

原创 【C语言】--数据类型和变量

C语言提供了丰富的数据类型来描述我们写代码的各种数据。使用整形来描述整数,使用字符类型来描述字符,使用浮点型来描述小数。而所谓的类型就是相似的数据所拥有的共同的特征,编译器只有知道了数据的类型,才知道怎么进行操作和分配内存(数据类型不一样所占用的内存空间大小也不一样。

2024-06-28 10:02:41 1655 65

原创 【数据结构】--前言

😏个人主页: 起名字真南🤔个人专栏:【数据结构初阶】 【C语言】数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般 是从时间和空间两个维度来衡量的,即时间复杂度和

2024-06-27 16:56:31 509 29

原创 【数据结构】--栈

👌个人主页: 起名字真南🤣个人专栏:【数据结构初阶】 【C语言】压栈:栈的插入操作叫做压栈/ 进栈。出栈:栈的删除操作叫做出栈。1.2.2 初始化我们可以看到栈的初始化和顺序表的初始化基本一致。所以这次我们在初始化的时候给定capacity = 4,因为初始有空间所以在给数组初始化的时候要开辟空间,使用malloc,然后定义top来记录栈顶的数据。1.2.3 销毁因为数组是一串连续的空间所以直接释放首元素地址即可。1.2.4 打印所有元素因为通过top来记录栈顶元素的原理是top作为访

2024-06-27 11:50:56 1339 40

原创 【C语言】--C语言中的常见概念

❤️个人主页: 起名字真南💕个人专栏:【数据结构初阶】 【C语言】main函数任何一个C语言程序不管他的代码有多少行,有多么复杂都是从main函数开始执行的,main函数是一个程序的入口,也被叫做主函数。main函数前面的int表示返回的类型是整形,所以在main函数的后面return 0,前后呼应。总结第一次写代买可能出现的错误在上面的代码中有这样一句:代码中使用了printf函数实现了代码在屏幕上的打印。这里的,会被后面的值替换。(后面会解释)同时我们在使用库函数是需要包含头文件的例如

2024-06-25 20:57:43 973 17

空空如也

空空如也

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

TA关注的人

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