自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈希表和容器中添加元素的方法

v.s.v.s.两者都是在容器末尾添加元素的方法,但是push_back会创建临时对象并进行拷贝构造,而emplace_back是直接构造可用于unordered_map类型以及unordered_set类型的哈希表总,如果传入的键已存在,则插入失败,原有的键值对保留。

2025-05-22 20:03:19 136

原创 存一下数据集转换的脚本

在处理HSRC2016数据集中遇到了一些困难,比如将标签转换成yolo格式的,划分数据集,查询目标类别是否修改成功,将33个类别重新修改变成指定个数的类别信息等。

2025-03-31 09:15:56 151

原创 C++ Primer Plus第十二章课后习题总结

3. 新编写程序清单10.7和程序清单10.8描述的Stock类,使之使用动态分配的内存,而不是string类对象来存储股票名称。另外,使用重载的operator<<()定义代替show()成员函数。再使用程序清单10.9测试新的定义程序。b. 提供一个Stringlow()成员函数,将字符串中所有的字母字符转换为小写(别忘了cctype系列字符函数)。d. 提供一个这样的成员函数,它接受一个char参数,返回该字符在字符串中出现的次数。给这个类提供实现,并编写一个使用所有成员函数的小程序。

2025-03-10 17:42:25 383

原创 C++ Primer Plus第九章课后习题总结

例如,包含一个让用户输入的循环,并使用输入的数据来填充一个由golf结构组成的数组,数组被填满或用户将高尔夫选手的姓名设置为空字符串时,循环将结束。第三个文件声明两个Sales对象,并使用setSales()的交互式版本为一个结构提供值,然后使用setSales()的非交互式版本为另一个结构提供值。编写一个程序,使用定位new运算符将一个包含两个这种结构的数组放在一个缓冲区中。然后,给结构的成员赋值(对于char数组,使用函数strcpy()),并使用一个循环来显示内容。用string对象代替字符数组。

2025-03-02 19:25:10 260

原创 C++ Primer Plus第八章课后习题总结

然而,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第二个参数的值,而等于函数被调用的次数)。5.编写模板函数max5(),它将一个包含5个T类型元素的数组作为参数,并返回数组中最大的元素(由于长度固定,因此可以在循环中使用硬编码,而不必通过参数来传递)。3. 编写一个函数,它接受一个指向string对象的引用作为参数,并将该string对象的内容转化成大写,为此可以使用表6.4描述的函数toupper()。

2025-02-26 21:39:56 796

原创 C++ Primer Plus第七章课后习题总结

请编写一个程序,它调用上述两个函数和至少另一个与add()类似的函数。如果读者爱冒险,可以尝试创建一个指针数组,其中的指针指向add()样式的函数,并编写一个循环,使用这些指针连续让calculate()调用这些函数。10.设计一个名为calculate()的函数,它接受两个double值和一个指向函数的指针,而被指向的函数接受两个double参数,并返回一个double值。calculate()函数的类型也是double,并返回被指向的函数使用calculate()的两个double参数计算得到的值。

2025-02-21 20:36:43 1231

原创 C++ Primer Plus第六章课后习题总结

4.加入Benevolent Order of Programmer后,在BOP大会上,人们便可以通过加入者的真实姓名、头衔或秘密BOP姓名来了解他(她)。请编写一个程序,可以使用真实姓名、头衔、秘密姓名或成员偏好来列出成员。

2025-01-30 19:39:52 1121

原创 C++ Primer Plus第五章课后习题总结

表示指向常量字符的指针,这意味着我们不能通过该指针修改它所指向的字符。这有助于防止意外修改字符串内容,从而导致程序错误或崩溃。

2025-01-23 23:22:46 587

原创 C++ Primer Plus第四章课后习题总结

Betty SueYeweB22Grade:CAge:22针对字符数组的整行有空字符键盘输入针对字符串的整行有空字符键盘输入程序清单4.4:return 0;

2025-01-20 22:11:29 604

原创 C++ Primer Plus第三章课后习题总结

在你的情况下,你声明了 int 类型的变量 feet、inches 和 pounds,但是如果你尝试输入一个 double 类型的值(例如带有小数的数字),那么 cin 将无法将该值赋给 int 类型的变量,因为它期望一个整数。在执行代码的时候,发现最后的结果输出还是整数(其实是因为最后在输出的时候变量名写成了degrees,这能对吗?),为了让输出格式变成浮点数,查询到可以使用cout的成员函数setf来规范输出,下面语句的含义是,以一般形式输出浮点数,小数点后精确到4位(四舍五入)

2025-01-13 20:33:07 1098

原创 leetcode之hot100---148排序链表(C++)

此时就是普通的插入排序,比较相邻元素处理2: 1,2,3,4,5,6,8,7,9处理7: 1,2,3,4,5,6,7,8,9最终得到有序数组:[1, 2, 3, 4, 5, 6, 7, 8, 9]

2024-12-31 14:17:48 812

原创 leetcode之hot100---138随机链表的复制(C++)

例如:原链表为1->2->3再复制以后就会变成1->1'->2->2'->3->3'根据原链表各个节点的random指向为新链表进行链接将交错链表分离成原链表和新建链表,并保留新建链表只在表层创建了新的存储空间,而更深层的引用类型仍然共享内存地址。浅拷贝部分共享内存,深拷贝完全独立浅拷贝会部分影响原对象,深拷贝完全不影响。

2024-12-26 19:32:04 988

原创 leetcode之hot100---25K个一组翻转链表(C++)

此时prev == tail子链表翻转结束 ,返回新的头(tail)尾(head)从表头开始遍历,找到组内最后一个节点,同时检查剩余节点是否大于等于K。根据返回的新的头和尾将子链表和原有链表进行连接,直至不在有k个节点。根据组内表头节点和表尾结点对子链表进行翻转,同时返回新的头和尾。继续遍历链表寻找需要进行翻转的子链表进行翻转。

2024-12-25 19:24:14 358

原创 leetcode之hot100---24两两交换链表中的节点(C++)

首先引入虚拟头节点以简化链表操作,然后使用指针逐步遍历链表,判断当前节点后是否存在可交换的相邻节点。若存在,则通过调整节点之间的链接顺序,将相邻节点的位置互换,同时保持链表的整体结构。交换完成后,指针移动到下一对节点,重复上述过程,不断更新需要交换的键对中第一个节点的位置,直至链表遍历结束。最终返回更新后的链表头节点。时间复杂度:O(n)空间复杂度:O(1)

2024-12-24 18:44:35 409

原创 leetcode之hot100---19删除链表的第N个节点(C++)

首先获取链表的长度,然后根据链表长度与n的关系找到要删除的节点前驱的位置,删除节点的方式是,使当前节点的后继变为其后继的后继但是要注意链表中只有头节点且需要删除的也是头节点的情况。

2024-12-24 16:15:29 214

原创 leetcode之hot100---2两数相加(C++)

如果某个链表已经遍历完,则用 0 填充其值。对于每次相加的结果,取个位作为新节点的值,进位部分保存在。不为 0,则需额外创建一个节点存储最后的进位值,最终返回表示相加结果的链表头节点。如果链表尚未初始化,创建头节点;否则在尾部添加新节点。,逐位相加对应节点的值,同时加上前一位的进位。

2024-12-24 11:19:34 203

原创 leetcode之hot100---21合并两个有序链表(C++)

分别遍历两个链表,不断比较节点大小,将较小的放入新链表。

2024-12-23 21:12:22 255

原创 leetcode之hot100---142环形链表II(C++)

参考环形链表的思路一,当在哈希表中找到第一个表外待入表的节点,说明链表存在环,且该节点为入环的第一个节点时间复杂度:O(N)空间复杂度:O(N)

2024-12-23 17:15:02 410

原创 leetcode之hot100---234回文链表(C++)

将链表中的值复制到数组中,然后使用双指针分别从数组的头尾进行遍历,判断两个位置的值是否相等,如果遍历完数组发现是回文数组就返回true,否则返回false。指针的后继的后继为空,指针不再进行移动,slow指针的位置就是前半部分链表的尾部。1.使用快慢指针找到链表前半部分的尾部。2.对链表后半部分进行反转。链表节点数目为5(奇数)3.判断是否为回文链表。时间复杂度:O(n)空间复杂度:O(1)

2024-12-22 21:16:04 671

原创 leetcode之hot100---206环形链表(C++)

遍历链表,同时借助哈希表判断当前遍历到的节点是否已经被访问过,如果当前节点已被访问过,则说明存在环。

2024-12-22 19:13:41 306

原创 leetcode之hot100---206反转链表(C++)

遍历链表,逐步反转每个节点的指针方向。

2024-12-21 16:08:39 447

原创 leetcode之hot100---160相交链表(C++)

把其中一个链表中的值存入哈希表中,然后在这个构建的哈希表中寻找另一链表中的值看官方题解空值使用的是nullptr,这是相较于NULL更安全的一种空值表示时间复杂度:O(headA.length+headB.length)空间复杂度:O(

2024-12-21 15:27:05 334

原创 leetcode之hot100---240搜索二维矩阵II(C++)

思路一:暴力解法遍历矩阵,查找成功返回true,否则返回falseclass Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int m = matrix.size(); int n = matrix[0].size(); //矩阵为空查找失败 if(n == 0){

2024-12-20 17:26:22 673

原创 leetcode之hot100---48旋转图像(C++)

由下图可知,原图中的第一行旋转后被放置最后一列,同时,对于数字‘1’,原本在第一行中第一个位置,经旋转后变为第一列的第一个位置因此可以得到原本第行第列的元素经顺时针旋转后会变成倒数第列的第个位置从数组的角度可以得到经过旋转后会到达由下图可知,数字‘3’原本是最后一列的第一个元素,经过旋转后变成了最后一行的第一个元素因此从数组的角度可以得到经过旋转后会到达同理可得,经过旋转后会到达经过旋转后会到达为了完成旋转操作,我们可以将矩阵分为多层,每一层是一个环状结构。

2024-12-19 16:40:39 1031

原创 leetcode之hot100---54螺旋矩阵(C++)

模拟螺旋矩阵的路径,路径超出界限,顺时针旋转,使用一个数组记录当前数字是否被访问到,直到所有的数字全部被访问constexpr的使用是告诉大家该数组为一个常量表达式,在编译的过程中其值不会改变;;都可以使用这个方向数组时间复杂度:O(mn)空间复杂度:O(mn)

2024-12-18 21:35:42 349

原创 leetcode之hot100---73矩阵置零(C++)

先遍历一遍数组,使用两个一维向量分别标记0元素所在的行和列;再遍历一遍数组,只要遍历到的元素所在行或列被标记就置零时间复杂度:O(mn)空间复杂度:O(m+n)显而易见,上述方法会导致时间复杂度和空间复杂度大量提升,是否减少标记从而大大降低空间复杂度呢?

2024-12-11 21:04:58 228

原创 leetcode之hot100---缺失的第一个正整数(C++)

对于一个长度为n的数组,其中没有出现的最小正整数必然在[1,n+1]内,其中n是数组的长度。

2024-12-04 21:14:51 395

原创 leetcode之hot100---除自身以外数组的乘积(C++)

刚开始的思路是先得到所有数的乘积,然后除以nums[i]得到除自身以外数组的乘积,但是考虑到除数有可能为0,这在计算机中是不被允许的。

2024-12-04 20:06:11 169

原创 leetcode之hot100---轮转数组(C++)

额外分配一个数组存储轮转后的数组,然后再将轮转后的结果复制到原数组中最开始根据思路一写的代码是这个,但是执行时超时了,所以又改成了下述优化代码:在初始化result数组时,使用了reserve方法使其错误分配空间。是一个,它定义了一个没有任何元素的vector,也就是一个空的。reserve(n)方法会为result预分配内存空间,以便在将来添加最多n个元素时不会触发多次重新分配内存。注意,reserve(n)只是预分配空间,并不会改变vector的实际元素数量。这个构造函数会创建一个大小为n的。

2024-12-04 17:35:05 355

原创 leetcode之hot100---合并区间(C++)

如果当前区间的左端点在结果数组末尾区间的右端点之后,则不会发生重合。先将区间按照左端点升序进行排序,

2024-12-03 21:17:40 105

原创 leetcode之hot100---最大子数组和(C++)

使用贪心算法的思想,使用pre记录前缀和,如果前缀和小于当前指针所指的数,也就是说在指针左侧的和对当前的和不增反减,就丢弃之前的数列注:‌‌。贪心算法的关键在于每一步都做出一个局部最优的选择,最终通过这些局部最优的选择来达到全局最优解。‌。

2024-12-03 20:41:08 226

原创 leetcode之hot100---最小覆盖子串(C++)

leetcode之hot100---最小覆盖子串(C++)

2024-11-28 15:55:16 364

原创 leetcode之hot100---滑动窗口最大值(C++)

eetcode之hot100---滑动窗口最大值(C++)

2024-11-27 19:54:46 394

原创 leetcode之hot100---和为K的子数组(C++)

我们通过维护一个动态的滑动窗口来解决问题。滑动窗口的范围由两个指针控制,一个指针表示窗口的起始位置(左边界),另一个指针表示窗口的结束位置(右边界)。窗口内的元素和会随着窗口范围的变化而动态调整。遍历数组,计算当前位置的累积和(前缀和),并通过。虽然可以编译成功,但是超出时间限制了。最终,结果即为满足条件的子数组个数。就是所有满足条件的子数组个数。来判断是否存在满足条件的子数组。

2024-11-26 20:49:24 284

原创 leetcode之hot100---找到字符串中所有字母异位词(C++)

遍历字符串s时,使用与字符串p长度相同的滑动窗口,并记录滑动窗口内每个字符的出现次数。将滑动窗口中的字符频率与字符串p的字符频率进行比较。如果两者一致,则将当前滑动窗口的起始索引记录为结果;否则继续移动滑动窗口,直到字符串s遍历完毕。解释:两部分:第一部分为滑动窗口初始化字符出现数组的时间复杂度,第二部分是移动滑动窗口的时间复杂度因为只需要存储Σ个字符出现的次数因此空间复杂度为O(Σ)

2024-11-26 11:38:20 313

原创 leetcode之hot100---无重复字符的最长子串(C++)

是指一个字符串中连续的一部分字符序列。

2024-11-22 11:43:49 601 1

原创 leetcode之hot100---接雨水(C++)

public://计算当前位置左边柱子的最高高度i++){//计算当前位置右边柱子的最高高度i >= 0;i--){i++){

2024-11-21 16:26:13 498

原创 leetcode之hot100---三数之和(C++)

【代码】leetcode之hot100---三数之和(C++)

2024-11-18 17:09:40 180

原创 leetcode之hot100---盛最多水的容器(C++)

总结:最开始的思路是先借助双指针找出给定数组中两个最大且相距最远的数,然后计算最大水量,但是在具体实现的过程发现,很有可能两个最大的数的个数以及其对应下标的个数都是不确定的,记录这些都会产生额外的开销。

2024-11-17 18:16:43 255

原创 leetcode之hot100---最长连续序列(C++)

异想天开之错误记录但是,哈希表完全可以使用变量来代替,使用哈希表会造成资源浪费,且时间复杂度为O(nlogn),不满足题目要求。

2024-11-16 17:34:00 409

空空如也

空空如也

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

TA关注的人

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