自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【算法学习计划】回溯 -- 二叉树中的深搜

leetcode 2331.计算布尔二叉树的值leetcode 129.求根节点到叶节点数字之和leetcode 814.二叉树剪枝leetcode 98.验证二叉搜索树leetcode 230.二叉搜索树中第K小的元素leetcode 257.二叉树的所有路径

2025-04-03 20:54:20 409

原创 【算法学习计划】回溯 -- 递归

leetcode 面试题08.06.汉诺塔问题leetcode 21.合并两个有序链表leetcode 206.反转链表leetcode 24.两两交换链表中的节点leetcode 50. Pow(x, n)

2025-04-03 16:46:02 394

原创 【算法学习计划】贪心算法(下)

【算法学习计划】贪心算法(下)leetcode 991.坏了的计算器leetcode 56.合并区间leetcode 435.无重叠区间leetcode 452.用最少数量的箭引爆气球leetcode 397.整数替换leetcode 354.俄罗斯套娃信封问题leetcode 1262.可被三整除的最大和leetcode 1054.距离相等的条形码leetcode 767.重构字符串

2025-04-01 15:15:10 1097 1

原创 【算法学习计划】贪心算法(中)

leetcode 2418.按身高排序leetcode 870.优势洗牌leetcode 409.最长回文串leetcode 942.增减字符串匹配leetcode 455.分发饼干leetcode 553.最优除法leetcode 45.跳跃游戏Ⅱleetcode 55.跳跃游戏leetcode 134.加油站leetcode 738.单调递增的数字

2025-03-30 13:48:15 734

原创 【算法学习计划】贪心算法(上)

【算法学习计划】贪心算法(上)leetcode 860.柠檬水找零leetcode 2208.将数组和减半的最少操作次数leetcode 179.最大数leetcode 376.摆动序列leetcode 300.最长递增子序列leetcode 334.递增的三元子序列leetcode 674.最长连续递增序列leetcode 121.买卖股票的最佳时机leetcode 122.买卖股票的最佳时机Ⅱleetcode 1005.K次取反后最大化的数组和

2025-03-27 23:09:32 888

原创 【算法学习计划】动态规划 -- 二维费用的背包问题、似包非包、卡特兰数

【算法学习计划】动态规划 -- 二维费用的背包问题、似包非包、卡特兰数leetcode 474.一和零leetcode 879.盈利计划leetcode 377.组合总和IVleetcode 96.不同的二叉搜索树

2025-03-23 20:37:48 1050

原创 【算法学习计划】动态规划 -- 背包问题(01背包和完全背包)

【算法学习计划】动态规划 -- 背包问题(01背包和完全背包)DP41 【模板】01背包leetcode 416.分割等和子集leetcode 494.目标和leetcode 1049.最后一块石头的重量ⅡDP42 【模板】完全背包leetcode 322.零钱兑换leetcode 518.零钱兑换Ⅱleetcode 279.完全平方数

2025-03-22 20:58:28 962

原创 【算法学习计划】动态规划 -- 两个数组的 dp

【算法学习计划】动态规划 -- 两个数组的 dpleetcode 1143.最长公共子序列leetcode 1035.不相交的线leetcode 115.不同的子序列leetcode 44.通配符匹配leetcode 10.正则表达式匹配leetcode 97.交错字符串leetcode 712.两个字符串的最小ASCII删除和leetcode 718.最长重复子数组

2025-03-20 01:17:38 919

原创 【算法学习计划】动态规划 -- 回文串问题

【算法学习计划】动态规划 -- 回文串问题leetcode 647.回文子串leetcode 5.最长回文子串leetcode1745.分割回文串IVleetcode 132.分割回文串Ⅱleetcode 516.最长回文子序列leetcode 1312.让字符串成为回文串的最少插入次数

2025-03-17 20:27:16 822

原创 【算法学习计划】动态规划 -- 子序列问题

【算法学习计划】动态规划 -- 子序列问题leetcode 300.最长递增子序列leetcode 376.摆动序列leetcode 673.最长递增子序列的个数leetcode 646.最长数对链leetcode 1218.最长定差子序列leetcode 873.最长的斐波那契子序列的长度leetcode 1027.最长等差数列leetcode 446.等差数列划分|I-子序列

2025-03-16 01:55:44 920

原创 【算法学习计划】动态规划 -- 子数组、子串系列

【算法学习计划】动态规划 -- 子数组、子串系列leetcode 53.最大子数组和leetcode 918.环形子数组的最大和leetcode 152.乘积最大子数组leetcode 1567.乘积为正数的最长子数组长度leetcode 413.等差数列划分leetcode 978.最长湍流子数组leetcode 139.单词拆分leetcode 467.环绕字符串中唯一的子字符串

2025-03-14 00:23:26 803

原创 【算法学习计划】动态规划 -- 简单多状态 dp 问题

【算法学习计划】动态规划 -- 简单多状态 dp 问题leedcode 面试题17.16.按摩师leedcode 213.打家劫舍IIleedcode 740.删除并获得点数leedcode LCR 091.粉刷房子leedcode 309.买卖股票的最佳时机含冷冻期leedcode 714.买卖股票的最佳时机含手续费leedcode 123.买卖股票的最佳时机Ⅲleedcode 188.买卖股票的最佳时机IV

2025-03-12 21:01:48 664

原创 【算法学习计划】动态规划 -- 路径问题

算法学习计划 -- 动态规划​​​​​​​leedcode 62.不同路径leedcode 63.不同路径!!leedcode LCR 166.珠宝的最高价值leedcode 931.下降路径最小和leedcode 64.最小路径和leedcode 174.地下城游戏

2025-03-10 22:43:05 982

原创 【算法学习计划】动态规划 -- 斐波那契数列模型

算法学习计划 -- 动态规划leedcode 1137.第 N 个泰波那契数leedcode 面试题 08.01.三步问题leedcode 746.使用最小花费爬楼leedcode 91.解码方法

2025-03-10 11:52:24 1009

原创 【C++】异常 详解

C++ 异常详解

2024-08-28 12:28:51 920 5

原创 C++11详解 (右值引用、可变参数模板、emplace_back、lambda表达式、function、bind)

右值引用、move、完美转发(forward)、可变参数模板、emplace_back、lambda表达式、function、bind

2024-08-26 23:17:45 921 3

原创 【STL】哈希表(概念讲解、底层实现、unordered_map/set封装)

首先我们需要明白的是,哈希是一种思想正常情况下,我们在面对一些算法题的时候,如果数据范围较小,比如英文26个字母小写,这种情况下我们就可以直接开一个简单数据,让每一个字母代表一个位置,这叫做映射而我们的哈希表,是一种数据结构,是用来处理那些数据范围很大但是数据量不一定大的情况假设我们存了一组数:1,331,200000,630我们能看到,这只有四个数,但是范围却是1~2000000,所以我们就会用到哈希表。

2024-08-22 00:30:51 1221 1

原创 【STL】红黑树(插入、删除底层实现)

首先我们来聊一聊红黑树是什么在之前的学习中,我们了解到了二叉搜索树,AVL树二叉搜索树的特性是左子树 < 根 < 右子树,但是二叉搜索树也有缺点,就是如果处在极端情况下,那么二叉搜索树的效率就和链表差不多为了解决这个问题,我们学习了AVL树,这棵树是通过旋转来控制树的高度,以此来达到绝对平衡的目的,也就是任何一棵子树,左右高度差都不会超过1但是这也伴随着一个问题就是,如果我们每一次插入,都判断、旋转,这样子的效率固然是高,但是有没有更好的办法,让其在保持高度平衡的同时,尽量减少旋转的次数。

2024-08-18 00:11:39 1112

原创 【STL】AVL树(插入、删除逻辑,旋转的引入)

我们在前面的学习中会知道,二叉搜索树有一个弊端,就是可能会一直插入在一条线上,如下:当我们遇到这种情况的时候,其实就和链表差不多了,效率就会从logN变成O(N)换句话说就是,100万个数据从搜索20次变成100万次所以就有了AVL树,这个树有一个规定就是:左右节点的高度差不超过1如上,这就是一棵AVL树,我们看到节点3,左子树高度为1,右子树为2,高度差为1我们看到节点8,左子树高3,右子树为2,高度差为1并且,AVL树我们可以理解成是一棵增加了AVL特性的二叉搜索树。

2024-08-14 00:57:48 976

原创 【STL】二叉搜索树 BSTree(底层讲解 + key_value(KV)的引入)

二叉搜索树和普通二叉树的区别就在于:二叉搜索树规定:左子树必须比根小,右子树比如比根大(如果相等就不插入该数据)中序遍历二叉搜索树是从小到大的有序序列(中序就是左、根、右子树,刚好左<根<右,所以中序就是从小到大)可以用于去重,因为相同的数据并不会重复插入用来查找数据效率很高(一般情况下)如上是一棵典型的二叉搜索树如果我们要给二叉搜索树起名的话,我们需要注意一个点,二叉的英文是binary,搜索是search我们叫二叉搜索就是BS,叫搜索二叉就是。。

2024-08-12 18:48:13 792 4

原创 【C++】面向对象三大特性之—— 多态(从底层带你理解多态)

多态的学习,对继承的掌握有着一定要求,特别是切割赋值,继承后默认成员函数中的析构函数的相关问题如果有想复习或者学习一下继承相关知识点的友友,可以看一看下面的这篇继承博客╰(*°▽°*)╯【C++】面向对象三大特性之—— 继承 | 详解现实世界中有很多例子都属于多态的范畴比如,小猫叫是喵喵、小狗叫是汪汪;再比如备胎给女生发消息,和男神给女生发消息,结果是不一样的所以我们由此可以引出多态的概念:多态就是不同的对象,做同一件事,结果不同你看猫和狗,都是叫,一个是喵喵,一个是汪汪,结果不同。

2024-08-11 17:03:48 1110 7

原创 【C++】面向对象三大特性之—— 继承 | 详解

到这里,我们有关继承的相关内容就讲完啦~( ̄▽ ̄)~*如果觉得对你有帮助的话,希望可以多多支持博主喔(○` 3′○)

2024-08-10 18:33:03 1227 17

原创 【C++】模板(相关知识点讲解 + STL底层涉及的模板应用)

如上这就是我们的函数模板,我们写的模板参数T在函数里面可以直接当成类型去传到时候我们传了什么参数给编译器,编译器就将T实例化成什么但是这时我们会遇到一个问题,如果我模板参数只写了一个T按理来说,我们传的应该就是两个一样的对象是吧但是这时我就不,我就要传两个不一样的,我传一个int,一个double,那在编译器看来,就不知道你这个T想变成什么了int main()return 0;到这里,我们这篇博客就结束啦!~( ̄▽ ̄)~*如果感觉对你有帮助的话,希望可以多多支持博主喔!

2024-08-09 18:53:55 905 2

原创 【C++】STL | priority_queue 堆(优先级队列)详解(使用+底层实现)、仿函数的引入、容器适配器的使用

本篇博客主要讲解的重点在于仿函数和容器适配器如果有希望了解堆是什么东西的,可以看一下下方链接的博客,里面对堆的相关知识讲解非常详细,当然下文也会进行相关的讲解堆-时间复杂度讲解-topk问题而堆的函数使用并不困难,如下:也就不到10个函数,我们在下文都有所讲解堆是一个树状结构,如果是小堆的话,其遵循的规则就是父节点 < 子节点,如下:如果是大堆的话,那么就是父节点 > 子节点而我们的堆其实是存储在一个数组上的,我们找一个节点的父节点或子节点都遵循着一定的数学规律。

2024-08-08 17:29:54 720

原创 【STL】| C++ 栈和队列(详解、deque(双端队列)介绍、容器适配器的初步引入)

今天我们要讲解的结构是栈和队列这两个的具体实现相比于前面我们学的string、vector、list都要简单得多(因为容器适配器的引入)如果有需要了解这两个数据结构的具体函数用法的话,也可以在较为官方的网站上进行查阅,如下kw=stack栈符合的原理是后进先出,图示如下:栈最常用的就是入栈、出栈,如果要将全部数据取出来的话,就写一个while循环判断栈是否为空(empty),然后挨个取 top(),出栈s1.push(1);s1.push(2);s1.push(3);s1.push(4)

2024-08-08 00:15:11 856 4

原创 【C++】STL | list (链表)详解及重要函数的实现

相比于vector和string,list这个迭代器可就开始上强度了其主要的强度在于:vector和string都是开辟的一段连续的空间,所以这两个的迭代器用原生指针就可以实现但是list不一样,list的空间是分散的,只有通过每个节点里的next指针才能找到下一个节点,还有就是实现const迭代器于普通迭代器两个版本的时候,需要在模板参数上动点手脚,这也是一个相对晦涩的地方kw=list到这里我们的list底层实现相关内容就结束啦(~ ̄▽ ̄)~

2024-08-07 18:38:58 1970 5

原创 【C++】STL | vector (顺序表)详解及重要函数的实现

vector在STL中属于较为简单的知识点,学习难度相对较低,但是相比于string,本篇博客的底层实现会添加一些很有意思且很实用的东西,比如:initializer_list、一段迭代器区间初始化等等kw=vector本篇文章关于vector的讲解到这里就结束啦(~ ̄▽ ̄)~如果觉得对你有帮助的话,希望能多多关注喔(○` 3′○)

2024-08-06 17:42:22 1106 5

原创 【C++】STL | string 详解及重要函数的实现

string的实现较为简单,属于奖励课的知识点,但是string的知识点比较冗余,没有后面STL的其他结构那样简洁,很多是日常中不会用到的,所以我们今天就实现一些日常中特别常见且重要的kw=string这篇文章到这里,就结束啦 ╰(*°▽°*)╯如果觉得对你有帮助的话,希望可以多多支持作者喔(〃 ̄︶ ̄)人( ̄︶ ̄〃)

2024-08-05 23:15:32 803 3

原创 C++ | 动态内存管理 new、delete (用法、底层)详解

我们先来写一个类,在该类的构造函数和析构函数里面分别打印一些内容方便我们检查结果struct AA()~A()int main()delete a1;return 0;我们可以看到,当我们使用了new来开辟一块A类型的空间的时候,他会在开辟空间的同时,还会调用对应的构造函数如果是开辟了一段空间比如10个的话,就会连续调用10次构造函数并开辟对应大小的空间而我们的delete就相反,他会调用对应的析构,如果是连续的就连续调用多次析构并销毁相应空间。

2024-08-03 21:59:12 1320 3

原创 C++ | 类和对象(下)(static成员、友元、内部类、匿名对象)

static成员在类里面是非常独特的,因为这个成员并不存在于类里面,就像是函数一样class Apublic:int _a;return 0;我们能看到,这段程序的目的就是看这个类的大小,我们的类里面有一个普通的int成员和一个static成员,但是结果为 4,这说明static成员是不存在于类中的因为是static成员,所以是不能在构造函数中进行初始化的那我们可以按如下方式赋值吗?

2024-08-03 16:02:54 678 4

原创 C++ | Date 日期类详解

日期类Date实现的本质就是运算符重载和赋值运算符重载我们要实现自定义类型像内置类型一样相加减,肯定会用到operator关键字+操作符比较类,如、

2024-05-03 16:37:40 1559 5

原创 C++ | 类和对象(中) (构造函数 | 析构函数 | 拷贝构造函数 | 赋值运算符重载 | 取地址 | const取地址)

构造函数、析构函数、拷贝构造函数、赋值运算符重载、取地址、const取地址

2024-05-01 23:42:29 1377

原创 C++ | 类和对象(上)

隐含的this指针、什么是类、struct与class、访问限定符、封装、类和对象的存储

2024-04-29 00:08:37 714

原创 从C语言到C++过渡篇(快速入门C++)

C语言->C++的过渡(快速入门C++)命名空间、C++输入与输出(cout && cin)、缺省参数、函数重载引用、内联函数、auto 关键字、区别于C语言的空指针(nullptr)

2024-04-27 00:43:41 1019

原创 常见七大排序(汇总)

快速排序(快排)(递归&非递归) 、 归并排序(递归&非递归) 、 希尔排序 、 堆排序 、 直接插入排序 、 选择排序 、冒泡排序 汇总

2024-04-24 20:47:51 674

原创 数据结构——二叉树链式结构(递归实现)

二叉树的遍历分为前序 —— 根 左子树 右子树中序 —— 左子树 根 右子树后序 —— 右子树 左子树 根层序 —— 一层一层往下遍历我们在看二叉树时应该这样看:如下这是一棵二叉树最上面的节点是根,下面是两大棵树,左节点以下的是左子树,右边的则是右子树接下来假设我们先遍历左,那么我们就该这么看:这一个整个左子树里面接着分成——根、左子树、右子树再往下分:根、左子树、右子树。

2024-03-20 01:29:22 1079 1

原创 数据结构——树(二叉树)的基础知识 & 堆 & 堆排序 & 时间复杂度讲解 & topk问题(详解)

由于堆的本质是满二叉树,且堆实现的底层结构也和二叉树有关,所以在这里我们需要先介绍一下树的相关知识如上是一棵树之所以叫做树,是因为他看起来像是一棵倒挂的树,根朝上,叶子朝下,如上,我们的 1 号节点就是这棵树的根,而 2、3、4 号都是 1 的子树但是有一个点需要注意:子树之间是不能相连的,或者说是不能成环的,如下:这样就不是一棵树了,因为子树之间相连了如上,这也不是一棵树每个节点的度不大于 2 的树,就是二叉树。

2024-03-14 00:01:13 1009

原创 数据结构——栈和队列(详解)

栈,一种仅允许在一端进,一端出的结构如上图所示,进数据和出数据的一端叫做栈顶,而相反的一段则叫做栈底数据从栈顶入,从栈顶出我们可以以吃货的视角打开栈:栈就像一个肉串,串肉要从尖的一段串进去,同时也是从尖的一端被吃掉我们还能发现,先被串进去的肉,会最后被吃掉栈也是如此,符合FILO原则,FILO就是 first in last out,翻译过来就是先进后出就像我们日常生活中的排队一样,队列就是从一端进,从另一端出。

2024-03-09 20:38:00 957 2

原创 初阶数据结构——链表专题——双链表详解

至此,我们对双链表相关内容的讲解就结束啦!如果对你有帮助,希望可以多多支持!!!

2024-03-03 00:28:41 770 1

原创 初阶数据结构——链表专题——单链表详解

我们设想一个场景:假如现在有一排连在一起的房间,而我们现在在第一个房间里,每个房间都有一扇通往下一个房间的门,但是上了锁,每个锁都不一样,如下:问:我们如何从第一间房间走到最后一间房间呢?答:在每一间房间里都放上通往下一间房间的钥匙就可以了链表的核心原理就是如此我们的链表里面不仅存着其应该带的数值,还存放着指向下一个节点的地址,地址连着地址,就像一根链子一样把数据都串起来,所以才叫链表至此,我们单链表的相关知识就讲完啦!!接下来为各位带来的是双链表的相关知识。

2024-03-01 12:17:28 989 1

空空如也

空空如也

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

TA关注的人

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