自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十天 | 232.用栈实现队列、 225. 用队列实现栈、20. 有效的括号、 1047. 删除字符串中的所有相邻重复项

这里,stOut 是一个 std::stack 类型的对象,它是C++标准模板库(STL)中的一个容器适配器,提供了后进先出(LIFO)的数据结构。因此,if (stOut.empty()) 这行代码的意思是:“如果 stOut 栈为空,则执行接下来的代码块(即 if 语句的大括号 {} 中的代码)”。push()函数接受一个参数(即要添加到栈顶的元素),并将其压入栈中。第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。

2024-07-12 23:52:32 759

原创 代码随想录算法训练营第九天 | 151. 反转字符串中的单词 、卡码网:55.右旋转字符串

这一行调用了一个未在代码段中定义的函数reverse,它用于反转字符串s中从索引0到s.size() - 1(即整个字符串)的字符顺序。思路: 整个字符串反转、移除多余的空格、再将单词反转。

2024-07-11 23:10:18 188

原创 代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字

在C++中,当你有一个std::vector(或任何其他类型的std::vector)命名为s时,s.size()会返回该向量中元素的数量。由于向量的索引是从0开始的,所以最后一个元素的索引是s.size() - 1。在reverseString函数中,这个索引被用来从字符串的末尾开始遍历,以便与从字符串开头开始的索引i进行字符交换,从而反转整个字符串。2、从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。根据数字的数量,计算并调整字符串的大小。

2024-07-10 22:08:28 731

原创 代码随想录算法训练营第七天 | 454.四数相加、 383. 赎金信、 15. 三数之和、 18. 四数之和

在找到一个满足条件的三元组后,为了避免添加重复的三元组,需要跳过 left 和 right 指针上所有与当前元素相同的元素。如果当前元素与前一个元素相同(即 i > 0 && nums[i] == nums[i - 1]),则跳过当前循环迭代,以避免重复的三元组。如果 nums[i] 大于 0,由于数组已排序,那么后续的所有元素都将大于 0,因此不可能再找到和为零的三元组,直接返回结果。在遍历过程中,对于每个 i,使用两个指针 left 和 right 分别指向 i 的下一个位置和数组的末尾。

2024-07-09 23:28:16 445

原创 代码随想录算法训练营第六天 | 242.有效的字母异位词、 349.两个数组的交集、202.快乐数、1.两数之和

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。

2024-07-08 23:59:52 967

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、链表相交、142.环形链表II

tmp和tmp1只是临时指针,用于在交换节点时保存原始链表的连接。它们分别指向cur->next和cur->next->next,即当前正在处理的两个相邻节点。这两个节点是链表的一部分,它们的内存不是在这个函数内部通过new分配的,因此不需要在这个函数内部释放它们。双指针遍历:快指针向前遍历保持与慢指针n+1个距离,这样当快指针走到null的时候,慢指针正好处于链表的倒数第n个数。此处要注意要让其中一个为最长的链表。

2024-07-06 22:01:45 418

原创 代码随想录算法训练营第三天 |203.移除链表元素、 707.设计链表、 206.反转链表

4、从哑节点开始遍历是因为你想要找到链表的最后一个节点,并将新节点添加到其后。哑节点作为链表的起点,提供了一种统一和简洁的方式来处理链表操作,特别是当涉及到链表的头部和尾部时。第N个节点一定是cur->next 这样才能操作cur来指向新节点,才能删掉第N个。​思路:判断要删除的是否是头节点或者非头节点,之后根据不同类型进行判断,最后注意释放内存。3、当前遍历节点一定要指向尾部节点,这样才能让尾部节点指向newnode。利用虚拟头节点来合并两种类型,统一去判断,更简洁。思路:直接虚拟头节点!

2024-07-05 22:24:16 460

原创 代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵

vector(n, 0):这是第二个参数,它是一个临时创建的整数向量(vector),它本身也被初始化为 n 个元素,每个元素都被初始化为 0。vector:这是一个模板类型,表示一个二维向量,其中每个元素都是一个整数向量(vector)。简单来说,它是一个二维数组的动态版本,其中你可以根据需要动态地增加或减少行和列的数量(虽然在这个特定的初始化语句中,大小是固定的)。定义:循环不变量是一个在循环开始前成立,且在每次循环迭代中保持为真,直到循环结束的属性或条件。

2024-07-04 20:53:13 437

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

二分查找 移除元素通过一个快指针和慢指针在一个for循环下完成两个for循环的工作

2024-07-03 15:20:54 578 2

空空如也

空空如也

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

TA关注的人

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