- 博客(75)
- 收藏
- 关注
原创 0621# C++八股 1.成员初始化列表的概念?以及为什么使用它会快一点?2.重写Override和重载Overload区别
成员初始化列表:用于在构造函数体执行之前初始化成员变量,提供更高效的初始化方式。直接初始化 vs. 赋值初始化:直接初始化避免了多余的默认构造和赋值操作,提高了性能。使用场景:特别适用于必须初始化的成员变量(如常量和引用),以及需要提高效率的情况。
2024-06-21 11:08:26 726
原创 0620# C++八股记录
虚析构函数确保在删除基类指针指向的派生类对象时,派生类的析构函数能够被正确调用,从而防止资源泄漏。虚析构函数支持多态性,即使在使用基类指针操作派生类对象时,也能保证对象的正确析构。虚函数是一种机制,使得在运行时可以根据对象的实际类型调用相应的函数实现,提供了动态绑定的能力。这是C++实现多态性的关键,通过虚函数,基类指针或引用可以调用派生类中的重写函数,实现更灵活和可扩展的代码设计。delete用于释放通过new分配的单个对象的内存。delete[]用于释放通过new[]分配的对象数组的内存。
2024-06-20 15:11:43 677
原创 0613# 3 八股 1.拷贝初始化和直接初始化
因此,编译器不会对该变量进行优化,确保每次访问该变量时都从内存中读取,而不是从寄存器中读取。浅拷贝是指简单地复制对象的所有成员值,包括指针成员的值。因此,修改一个对象的指针成员所指向的内容会影响另一个对象。深拷贝是指不仅复制对象的所有成员值,还会为指针成员分配新的内存,并复制原有内存的内容。:指针指向的内存被释放后,指针没有被重新设置,继续使用该指针会导致未定义行为。解决方法:在声明指针时进行初始化,指向一个有效的对象或设置为。:指针指向的对象在其作用域结束后被销毁,指针继续使用该对象。
2024-06-13 14:51:01 953
原创 0612#chatgpt八股 2.define宏定义 , inline, const和static的区别?
用途:用于定义预处理宏,可以在代码中替换文本。语法特点预处理器指令,在编译之前进行替换。没有类型检查。可以用于常量、函数样式宏等。return 0;#define宏定义用于文本替换,没有类型检查。在编译前由预处理器处理。适用于定义常量或简单的函数样式宏。inline用于建议编译器将函数展开,减少函数调用开销。适用于小而简单的函数。const用于定义常量或不可修改的变量,提供类型安全。适用于需要保证值不变的场景。static。
2024-06-12 17:16:14 908
原创 0612#chatgpt八股 1.new,malloce // delete,free
new/delete和是现代 C++ 中推荐使用的内存管理工具,它们提供了自动内存管理,简化了内存管理的代码。和替代了传统的new和delete,减少了内存泄漏和其他内存管理相关的问题。推荐使用智能指针,尤其是在现代 C++ 编程中,除非有特殊需求,否则尽量避免使用手动的mallocfree和newdelete。
2024-06-12 17:07:18 566
原创 0612#连续子数组最大和
小红拿到了一个数组,她希望进行最多一次操作:将一个元素修改为x。小红想知道,最终的连续子数组最大和最大是多少?第一行输入两个正整数n和x。代表数组的大小,以及小红可以修改成的元素。输出 t 行,每行输出一个整数,代表连续子数组的最大和。第二行输入n个正整数a_i,代表小红拿到的数组。第一行输入一个正整数t,代表询问次数。
2024-06-12 16:01:05 133
原创 20240422-算法复习打卡day61||代码随想录算法训练营打卡总结
不知不觉也打卡了60天,期间也有拖延,也有腹泻式打卡(其实就是写完leetcode不想再编写一篇blog,懒了)很多的感想记录在了obsidian文档中,回头看看还是很有成就感,一方面是系统地啃完了一遍,也结合自己情况详细的做了tips,一方面是把obsidian从未使用到入门了,以后也会继续用obsidian自己记录,不过不一定会截取内容发csdn了(还是感觉发上来有点麻烦)题外话:迟到两天的总结,因为周末去看了F1-上海站。2004年在K看台的小周,在2024年终于走到了上赛的发车格。
2024-04-22 12:05:22 217
原创 20240418-算法复习打卡day58|| ● 739. 每日温度 ● 496.下一个更大元素 I
● 496.下一个更大元素 I。● 739. 每日温度。
2024-04-22 11:44:51 129
原创 20240416-算法复习打卡day56||● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇
583. 两个字符串的删除操作。
2024-04-18 15:22:31 143
原创 20240413-算法复习打卡day53||● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划
53. 最大子序和 动态规划。1143.最长公共子序列。1035.不相交的线。
2024-04-18 11:40:23 151
原创 刷题记录3
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3。
2024-04-15 17:28:51 316
原创 20240412-算法复习打卡day52||● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组
nums1和nums2匹配上之后,dp数组状态只能由其左上角推出来。
2024-04-15 14:35:59 236
原创 20240411-算法复习打卡day51||● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结
dp[i][0] 买入股票状态(持有)【取 前一天冷却期和前一天不是冷却期的不持有股票最大值 - 买入价格 和 前一天持有的状态取二 者的最大值】dp[i][1] 表示不持有股票 【手续费,在比较卖出后现金的max的时候 -fee 即可】dp[i][3] 代表前一天做交易,当前为冷却期。714.买卖股票的最佳时机含手续费。309.最佳买卖股票时机含冷冻期。dp[i][1] 不持有股票状态。【取两种不持有股票状态的最大值】dp[i][2] 今天卖股票状态。dp[i][0] 表示持有股票。
2024-04-15 14:11:36 234
原创 题库记录2
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输出该数值的近似整数值。
2024-04-12 17:29:41 298
原创 20240410-算法复习打卡day50||● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV
dp [ i ] [ j ] 中 i表示第i天,j 为 [0 - 4] 五个状态,dp [ i ] [ j ] 表示第 i 天状态 j 所剩最大现金。0 没有操作 (其实不用赋值,无操作就是初始化之后的0)0 没有操作 (其实不用赋值,无操作就是初始化之后的0)(2 * k - 1) 第 k次持有股票。(2 * k ) 第k次不持有股票。123.买卖股票的最佳时机III。2 第一次不持有股票。4 第二次不持有股票。2 第一次不持有股票。4 第二次不持有股票。每次交易根据前一次得出;
2024-04-12 13:39:36 279
原创 20240409-算法复习打卡day49||● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II
dp[i][0]代表第i天持有的最大利润,dp[i][1]代表第i天不持有的最大利润;采用dp[i][0] 代表持有股票状态;dp[i][1]代表不持有股票状态;通过计算每天的最大利润,达到“多次交易”的效果。122.买卖股票的最佳时机II。121. 买卖股票的最佳时机。
2024-04-12 11:48:10 114
原创 20240408-算法复习打卡day48||● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III
result[1]代表根节点选 和下面val1对应。result[0]代表根节点不选 和val2对应。采用0和1代表不选和选这两种状态。213.打家劫舍II。337.打家劫舍III。
2024-04-11 17:39:16 298
原创 20240406-算法复习打卡day46||● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!
139.单词拆分令word = s中从 j 处开始,长度 i - j 的字符串如果= wordSet.end(),说明word在wordSet中,当前d[j]为true时,符合条件关于多重背包,你该了解这些!
2024-04-11 11:25:39 319
原创 20240405-算法复习打卡day45||● 70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数
当 m = 2,n = 3 时,n = 3 这表示一共有三个台阶,m = 2 代表你每次可以爬一个台阶或者两个台阶。每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?输入描述:输入共一行,包含两个正整数,分别表示n, m。需要 n 阶你才能到达楼顶。输出描述:输出一个整数,表示爬到楼顶的方法数。注意:给定 n 是一个正整数。此时你有三种方法可以爬到楼顶。70. 爬楼梯 (进阶)
2024-04-09 15:41:00 234
原创 20240403-算法复习打卡day43||● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
1049. 最后一块石头的重量 II。
2024-04-09 13:13:25 279
原创 20240402-算法复习打卡day42||01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。01背包问题,你该了解这些!416. 分割等和子集。
2024-04-08 16:21:56 134
原创 20240401-算法复习打卡day40||343. 整数拆分、96.不同的二叉搜索树
发现dp[3] = dp[2] * dp[0] + dp[1] *dp[1] +dp[0] * dp[2];元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量。元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量。元素3为头结点搜索树的数量 = 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量。首先dp递推式子,拆分后乘积最大,那么dp[a]代表的就是a拆分的乘积最大值;不断更新dp[i]的值。
2024-04-01 14:47:39 286
原创 20240329-算法复习打卡day38||● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
746. 使用最小花费爬楼梯。509. 斐波那契数。
2024-03-30 15:56:26 104
原创 20240328-算法复习打卡day37||● 738.单调递增的数字 ● 968.监控二叉树 ● 总结
这样会导致private类里traversal返回的result与public的result并不是同一个(相当于在public里又生成了一个result,minCam返回的是这个result)两个维度权衡问题可以用贪心,先顾一遍,比如从左到右,然后再从右到左(公共区间,一箭射气球……这里最开始犯了一个错误,在public下minCam函数写成了int result = 0。0代表没覆盖,2代表覆盖,1代表放摄像头,默认NULL的节点为2。找到数字最开始从增到减的地方。968.监控二叉树;
2024-03-30 15:33:50 257
原创 20240327-算法复习打卡day36||● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
push进result,然后用result.back()最后这个区间的右边界与下一个区间的左边界比较。先排序搞定一边,根据每个区间右边界进行排序;计算不需要删除的(判断条件更清楚)435. 无重叠区间。763.划分字母区间。
2024-03-29 11:02:45 256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人