- 博客(41)
- 收藏
- 关注
原创 4.5类和对象——运算符重载
概念:对运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型作用:实现两个自定义数据类型相加的运算总结:左移运算符重载作用:可以输出自定义数据类型总结:重载左移运算符,配合友元,可以实现输出自定义数据类型。递增运算符重载作用:通过重载递增运算符,实现自己的整型数据总结:前置递增返回引用,后置递增返回值
2024-08-04 21:35:14 291
原创 5.C++文件操作
本笔记为观看后的学习笔记。程序运行时产生的数据都属于临时文件,程序一旦运行结束都会被释放通过。C++中对文件操作需要包含头文件-文件以文本的ASCII码形式存储在计算机中-文件以文本的形式存储在计算机中,用户一般不能直接读懂它们。
2024-08-04 21:22:23 617
原创 4.7类和对象——多态
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。多态中,父类虚函数的实现没有什么意义,所以将虚函数改为 纯虚函数。子类必须重写抽象类中的纯虚函数,否则也属于抽象类。如果是纯虚析构,该类属于抽象类,无法实例化对象。virtual ~类名() = 0;解决方法:将父类中的析构函数改为。virtual ~类名(){}属于静态多态,复用函数名。抽象类:有纯虚函数的类。类名::~类名(){}多态案例一-计算器类。多态案例一-计算器类。多态案例二-制作饮品。
2024-08-04 16:29:37 296
原创 4.4类和对象——友元
本笔记为观看C++黑马程序员后的学习笔记。背景:在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术目的:让一个函数或者类 访问另一个类中私有成员友元的关键字:friend。
2024-07-29 06:34:11 107
原创 3.函数高级:函数的默认参数|函数的占位参数|函数重载
占位参数,就是在参数列表中,有一个自己的数据类型,该数据类型也可以有默认参数。参数列表中,某位置有自己的默认值,从该位置起,往后就都必须设有默认值。函数的形参,有自己的参数值就用参数值,没有就用形参列表的默认值。函数重载,特点:函数名可以相同,目的:提高复用性。函数声明和函数实现,二者只能有一个设有默认值。
2024-06-04 00:05:12 260
原创 函数 基础知识
作用:将一段经常使用的代码封装起来减少重复代码一个较大的程序,一般分为若干个程序块,每个块实现特定的功能。return a>b?a:b;函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式。
2024-04-18 23:14:04 301
原创 指针 基础知识
/1、定义指针int a = 10;//指针定义的语法: 数据类型 * 指针变量名;int * p;//让指针记录变量a的地址p = &a;//& 为取址符cout
2024-04-06 18:55:26 306
原创 代码随想录算法训练营第25天|216.组合总和III |17.电话号码的字母组合
本题大家刚开始做会有点难度,先自己思考20min,没思路就直接看题解。学完感想: 关于“组合”、“剪枝”,算法思路是字面意思上的理解。如果把 组合问题理解了,本题就容易一些了。学完后的想法:尽力去理解了,但还是够呛。216.组合总和III。17.电话号码的字母组合。
2024-04-01 22:46:29 347
原创 代码随想录算法训练营第24天|理论基础 |77. 组合
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯函数也就是递归函数,指的都是一个函数。
2024-04-01 22:02:47 1066
原创 代码随想录算法训练营第20天|654.最大二叉树 |617.合并二叉树 |700.二叉搜索树中的搜索 |98.验证二叉搜索树
又是构造二叉树,昨天刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历。这次是一起操作两个二叉树了, 估计大家也没一起操作过两个二叉树,也不知道该如何一起操作,可以看视频先理解一下。但本题是有陷阱的,可以自己先做一做,然后在看题解,看看自己是不是掉陷阱里了。递归和迭代 都可以掌握以下,因为本题比较简单, 了解一下 二叉搜索树的特性。遇到 搜索树,一定想着中序遍历,这样才能利用上特性。算法思想:用前序遍历来合并两个二叉树。因为构造顺序是根左右。
2024-03-31 23:37:33 414
原创 代码随想录算法训练营第21天|235. 二叉搜索树的最近公共祖先 |701.二叉搜索树中的插入操作 |450.删除二叉搜索树中的节点
235. 二叉搜索树的最近公共祖先相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。本题迭代和递归方法都简单,因为有序。算法思路:利用二叉搜索树的特性:左<根<右。遍历二叉搜索树,如果当前节点比P,Q的节点都大,则P,Q的公共祖先向该节点左子树寻找,反之,如果当前节点比P,Q的节点都小,则P,Q的公共祖先向该节点右子树寻找,当找到第一个在P、Q大小之间的节点,即为最小公共祖先。应用场景:求最近公共祖先,因为。
2024-03-27 21:45:34 629
原创 代码随想录算法训练营第20天|530.二叉搜索树的最小绝对差 |501.二叉搜索树中的众数 | 236. 二叉树的最近公共祖先
更优解法 双指针:设两个指针,cur和pre, 指向当前节点和前一个节点,用cur-pre,结果用result数组保存(result初始值设为int型最大值,因为求最小值),之后result不断和cur-pre比较,如果小的话,result更新替换为更小的那一个,如此递归,直到结束,选出最小值。普通解法:先遍历一遍二叉树(前/中/后续,都行)用map统计每个元素出现的频率,对这些频率排序,方法是把map转换为vector数组,然后找众数。背景:本题其实是比较难的,可以先看我的视频讲解。
2024-03-26 23:12:38 341
原创 代码随想录算法训练营第16天|104.二叉树的最大深度 559.n叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数
什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。二叉树用到的迭代法,可以直接过,二刷有精力的时候 再去掌握迭代法。先看视频讲解,和最大深度 看似差不多,其实 差距还挺大,有坑。思路细节:本题 最小深度 定义是:根节点到叶子结点的最小距离。今日收获+学习时长:大概对最小深度了解了。学完后想法:最小深度和最大深度的中间过程差别还很大。今日收获+学习时长:代码可以看懂。学习时长:学习时长,不详。
2024-03-24 23:44:46 530 1
原创 代码随想录算法训练营第18天|513.找树左下角的值|112. 路径总和 | 113.路径总和ii |106.从中序与后序遍历序列构造二叉树 |105.从前序与中序遍历序列构造二叉树
2.确定终止条件,即找到叶子节点 以及 如果叶节点的深度如果比maxDepth的深度大的话,更新最大深度。106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的。学完后想法:二叉树对递归和回溯的应用,感觉就是标配,怎么题题都有。背景:本题 又一次设计要回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解。思路细节:求的是深度,用前/中/后序遍历都可,因为就不涉及中节点的处理。今日收获+学习时长:大概了解了求路径之和的思路。今日收获+学习时长:无。
2024-03-23 19:49:25 515
原创 代码随想录算法训练营第17天|110.平衡二叉树 |257. 二叉树的所有路径 |404.左叶子之和
这是第一次接触到回溯的过程, 视频里重点讲解了 本题为什么要有回溯,已经回溯的过程。虽然我很认真的学下来了,但我还是不会/(ㄒoㄒ)/~~这代码让我自己写我还是写不出来,好在收获点理论性的知识了!今日收获+学习时长:回溯你用不用,它都在那里,就在递归的“下面”。其实本题有点文字游戏,搞清楚什么是左叶子,剩下的就是二叉树的基本操作。3.确定单层递归的逻辑。学完后想法:我知道什么是左叶子,但不妨碍我犯迷糊,回头再补吧。再一次涉及到,什么是高度,什么是深度,可以巩固一下。今日收获+学习时长:学习时长,不详。
2024-03-22 23:33:47 607 1
原创 代码随想录算法训练营第14天| 二叉树的理论基础| 递归遍历| 迭代遍历| 统一迭代
链式存储的二叉树节点的定义方式。int val;说到二叉树,就不得不说递归。递归遍历背景:(必须掌握)二叉树的三种递归遍历掌握其规律后,其实很简单代码随想录做题初始状态:算是二刷,思路上有点模糊的印象学完后想法:简单思路关键点:1.确定递归函数的参数返回值2.确定终止条件3.确定单层递归的逻辑今日收获+学习时长:复习了递归思路。学习时长,40min。
2024-03-19 21:42:34 1060 1
原创 代码随想录算法训练营第13天|239. 滑动窗口最大值|347.前 K 个高频元素|总结
寻找前k个最大元素流程如图所示:(图中的频率只有三个,所以正好构成一个大小为3的小顶堆,如果频率更多一些,则用这个小顶堆进行扫描)
2024-03-18 22:18:29 1351
原创 代码随想录算法训练营第11天|20. 有效的括号|1047. 删除字符串中的所有相邻重复项|150. 逆波兰表达式求值
第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。就是字符串遍历完之后,栈是空的,就说明全都匹配了。第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。2.首先建立一个新栈,新栈放另一半匹配的右括号,栈顶遇见相同的右括号时逐一删除。2.将栈中的元素用一个字符串记录,然后反转字符串,输出该字符串,即为所求结果。
2024-03-17 21:35:18 956 1
原创 代码随想录算法训练营第10天|栈与队列理论基础|232.用栈实现队列 |225. 用队列实现栈
文档背景:了解一下 栈与队列的内部实现机智,文中是以C++为例讲解的。
2024-03-16 00:24:29 1486 1
原创 代码随想录算法训练营第8天|344.反转字符串|541. 反转字符串II|卡码网:54.替换数字|151.翻转字符串里的单词|卡码网:55.右旋转字符串
这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。学完后想法:惭愧,此题之前虽然做过2遍,但重刷还是不会,原因是对双指针的思想还不够深入。本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。今日收获+学习时长:如何用双指针反转字符串搞懂了,开心。今日收获+学习时长:,学习时长,不详。今日收获+学习时长:,学习时长,不详。今日收获+学习时长:,学习时长,不详。今日收获+学习时长:,学习时长,不详。卡码网:55.右旋转字符串(补)
2024-03-15 00:30:06 937 1
原创 代码随想录算法训练营第9天|28. 实现 strStr()|459.重复的子字符串|字符串总结 |双指针回顾
因为大家 算法能力还没到,细扣 很难的算法,会把自己绕进去,就算别人给解释,只会激发出更多的问题和疑惑。所以大家先了解大体过程,知道这么回事, 等自己有 算法基础和思维了,在看多看几遍视频,慢慢就理解了。因为KMP算法很难,大家别奢求 一次就把kmp全理解了,大家刚学KMP一定会有各种各样的疑问,先留着,别期望立刻啃明白,第一遍了解大概思路,二刷的时候,再看KMP会 好懂很多。KMP和本题,一刷的时候 ,可以适当放过,了解怎么回事就行,二刷的时候再来硬啃。28. 实现 strStr()
2024-03-15 00:27:00 894 1
原创 代码随想录算法训练营第7天|第454题.四数相加II|383. 赎金信|第15题. 三数之和|第18题. 四数之和
初始做题状态:不会本题背景:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开发也是这样。学完后想法:该题听完好几遍依然没懂,日后还需再看,希望能比今日理解有所深入思路关键点:1.思路:仅仅遍历数组列表A,B, 取A,B中的数组元素a+b, 再遍历数组列表C,D,取C,D中的数组元素c+d,看是否符合a+b+c+d=0,符合就统计key对应出现的次数value。
2024-03-12 23:07:41 2564 1
原创 代码随想录算法训练营第4天|24. 两两交换链表中的节点|19.删除链表的倒数第N个节点|面试题 02.07. 链表相交|142.环形链表II
本题背景:中等题,重点,考察链表细节。
2024-03-09 22:42:58 1583
原创 代码随想录算法训练营第2天|977.有序数组的平方|209.长度最小的子数组|59.螺旋矩阵II
文档讲解:初始做题状态:暴力算法半对,有进步,开心记录和朋友的聊天,哈哈。
2024-03-08 00:17:57 1598
原创 代码随想录算法训练营第一天|704.二分查找、27.移除元素
初始做题状态:做错学完后想法:对二分查找,这种借助中间元素位置,不断对[left,right]或[left,right)区间的分段讨论的思路更清楚遇到的重点和困难:1.对target<nums[middle]和target>nums[middle]这两种情况下,right和left分别等于什么?(重点)2.(right-left)>>1等价于(right-left)/2,且前一个速度更快 (遇到的困难)
2024-03-06 23:41:39 2876
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人