自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录刷题day13|LeetCode144 145 94二叉树的前/后/中序遍历(递归、迭代、统一迭代)、LeetCode102 二叉树的层序遍历

这种基础定义代码,要熟练到手撕代码能信手拈来的程度🙏一定要锻炼到白纸都能写出来。

2024-09-30 13:28:52 920

原创 代码随想录刷题day11|LeetCode150 逆波兰表达式求值、LeetCode239 滑动窗口最大值、LeetCode347 前 K 个高频元素

关于小顶堆大小比较的代码实现,需要。

2024-09-23 14:48:25 620

原创 代码随想录刷题day10|LeetCode232 用栈实现队列、LeetCode225 用队列实现栈、LeetCode20 有效的括号、LeetCode1047 删除字符串中的所有相邻重复项

文章是本人刷题过程中的一些笔记和理解,记录的解析不一定足够清晰,也可能存在本人暂未意识到的错误,如有问题欢迎大家指出。这道题也不难,利用栈先进后出的性质,栈可以作为 判断是否出现两个相邻且相同的字母 的工具。思考:也是一道不涉及算法的题,但是相比于用栈实现队列来说会稍微有些绕,主要体现在pop操作的实现。因为栈先进后出的特性,和括号匹配是适配的,外层的括号后匹配,内层的括号先匹配。栈的内部结构,栈的底层实现可以是vector,deque,list, 主要就是数组和链表的底层实现。代码说明在代码块注释中。

2024-09-19 20:49:57 820

原创 代码随想录刷题day9|LeetCode151 反转字符串中的单词、KamaCoder55 右旋字符串、LeetCode28 找出字符串中第一个匹配项下标、LeetCode459 重复的子字符串

力扣题目链接思考:完成这道题反转单词可以分解为以下几个步骤: 1、将所有多余空格去除 2、将整个串反转 3、将每个单词反转回正常顺序这道题要求的结果只保留字符串中单词之间的空格,其余空格删除,可以联系到数组part的题目 移除元素,使用快慢指针完成删除多余空格的操作。时间复杂度为O(n)。注意设置边界条件不要误删单词中间的空格(这个地方debug起来相当事多。。。*卡哥不建议使用string类的erase方法是因为,本身erase删除串内元素就是一个时间复杂度为O(

2024-09-18 20:17:49 591

原创 代码随想录刷题day8|LeetCode344 反转字符串、LeetCode541 反转字符串Ⅱ、KamaCoder54 替换数字

文章是本人刷题过程中的一些笔记和理解,记录的解析不一定足够清晰,也可能存在本人暂未意识到的错误,如有问题欢迎大家指出。但是看卡哥的解法说反转的逻辑可以用库函数......alright不过确实反转不是解题关键部分,重点在于确定反转范围的头尾。但是库函数只涉及解题过程中的一小部分,同时已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。字符串数组的操作,其实就是数组操作,不是很难,原地算法设置一个字符大小的交换空间、同时还是使用。注意,算法训练阶段,减少库函数的使用,特别是。

2024-09-12 01:58:19 598

原创 代码随想录刷题day7|LeetCode454 四数相加Ⅱ、LeetCode383 赎金信、LeetCode15 三数之和、LeetCode18 四数之和

当第一个数当前取某个值时,由于数组已变为有序数组,数组左边的元素一定较小,右边的元素一定较大,三数之和大于0时则right向左移动、小于0则left向右移动,left和right就不断向内缩小,直到取完所有合适的三元组,然后再迭代第一个数,重复滑动窗口的操作。注意不能有重复的三元组是指,不能出现所含元素完全相同的三元组,即不能为{[-1,0,1],[-1,1,0]},但是三元组中可以有数据重复(但下标不同)的元素,即{[0,0,0],[-1,-1,2]}。如果三个数组合并对比剩下一个数组,时间复杂度为O(

2024-09-11 10:05:05 547

原创 代码随想录刷题day6|LeetCode242 有效的字母异位词、LeetCode349 两个数组的交集、LeetCode202 快乐数、LeetCode1 两数之和

实现的思路是,遍历数组,并实时在map中查询是否存在 与当前遍历到的数组元素相加和为target的数(设为theOther),若不存在,则将当前数组元素及其下标插入map中,若存在,则返回一个包含 当前数组元素的下标和theOther的下标 的数组。,64+81=145,1+16+25=42,16+4=20,4+0=4(因为题目示例2直接告诉我们4不是快乐数,所以到这里已经知道17不是快乐数了),16,1+36=37,9+49=58,枚举查找集合中的元素时间复杂度为O(n),而哈希表查找的则为O(1)。

2024-09-06 16:09:08 614

原创 代码随想录刷题day4|LeetCode24 两两交换链表中的节点、LeetCode19 删除链表的倒数第N个节点、LeetCode02.07 链表相交、LeetCode142 环形链表II

这样的速度比例还有一个好处,快指针相对于慢指针以每次移动一个结点的速度追赶慢指针,不会出现赶上慢指针但是跳过慢指针而没法相遇的情况。,故需要确定相遇的结点(可在判断是否存在环的过程中求得),此时再使用两个新指针分别从相遇点和头结点同时出发(在这里k=1可以理解为两个指针的速度比例为1),直到两新指针相遇,相遇的新结点就是环入口。当链表不存在环时,快指针一定会先走完整个链表,两指针不会相遇。列个简单的相遇问题等式,由于快指针所走路程是慢指针的两倍,且在两指针相遇时快指针有可能已经转了若干圈,可得原型式。

2024-09-03 23:36:04 821

原创 代码随想录刷题day3|LeetCode203 移除链表元素、LeetCode707 设计链表、LeetCode206 反转链表

很久没写链表操作了(擦汗),顺便复习一下手搓创建、输出和删除链表结点的细节,比如避免访问被释放结点内存(heap-use-after-free on address)之类的错误。,cur负责从头到尾遍历结点,pre负责在cur后面保存cur遍历的前一个结点,temp负责保存cur未遍历到的下一个结点,确保指针在交换方向前前后结点均不丢失。用c++编程移除链表元素时,在修改结点next指针指向后,还需要手动delete移除的结点,防止内存占用过多。我的代码:(写的是单链表,有时间也写下双链表。

2024-09-01 23:26:29 546

原创 代码随想录刷题day2|LeetCode209 长度最小的子数组、LeetCode59 螺旋矩阵II、KamaCoder58 区间和、KamaCoder44 开发商购买土地

核心解法是设置一个前缀和(原数组下标从0到其他下标所在区间的元素和)数组sum,当要求某一个指定区间时,例如原数组下标2到下标5之间的区间和,可以通过sum[5]-sum[1]求得。*关于oj平台的判定,出现时间超限的问题时,要考虑减少不必要循环,并且当处理的数据量很大时,使用scanf和printf函数会比cin和cout节省运行时间。下标2到下标5之间的元素包括下标2的元素,所以减数是sum[1]而不是sum[2]。以下图n=5和n=6为例,注意到转几圈和n有关,中央是否有空缺和n的奇偶性有关。

2024-08-30 15:46:24 664

原创 代码随想录刷题day1|LeetCode704 二分查找、LeetCode27 移除元素、LeetCode977 有序数组的平方

且因为左闭右开原则,每进行一次二分时的if条件若为大于(nums[mid]>target,不包含等于),则修改区间为原区间的左半部分,同时边界也不包括右端的情况下,right可直接取mid值,因为已经在不等号判断时排除掉了下标为mid的元素,无需包含进下次循环的判断中;if条件若为小于(nums[mid]

2024-08-29 01:25:37 408 1

实验二apk.apk.1

实验二apk.apk.1

2022-11-07

空空如也

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

TA关注的人

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