自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第17天|二叉树(四)

思路:后序递归遍历左右子树,判断左右子树是否为平衡树,若左右子树高度差绝对值不超过1,则为平衡树。思路:左叶子之和,左子树左叶子之和加右子树左叶子之和。

2024-06-08 17:46:31 186 1

原创 代码随想录算法训练营第16天|二叉树(三)

思路:后续遍历递归法,求左子树和右子树的最小值;注意和最大深度不同的情况是,若左子树为空,深度为右子树深度加1;若右子树为空,深度为左子树深度加1。思路:后续遍历递归法;遍历左子树高度,右子树高度,最后加上根节点所在层级1。思路:后序遍历递归。左子树节点树+右子树节点树+根节点。

2024-06-08 12:47:03 250

原创 代码随想录算法训练营第15天|二叉树(二)

思路:若根节点为空,则一定是对称二叉树;比较左右子节点,若左右子节点都为空,则为对称二叉树,若存在其中一个节点为空,则不是对称二叉树;若左右子节点都存在,但是对应值不相等,也不是二叉树;若左右子节点都存在且对应值相等则判断左子树左节点和右子树右节点是否相等(外侧),左子树右节点与右子树左节点是否相等(内侧)思路:先交换左右子节点,再反转左右子树。

2024-06-07 16:43:21 232

原创 代码随想录算法训练营第14天|二叉树(一)

处于疯狂赶进度中,二叉树的遍历,先完成里递归法,二刷完成迭代法。二叉树前序遍历,递归法。

2024-06-07 15:38:42 255

原创 代码随想录算法训练营第13天|栈和队列(三)

思路:定义一个双端单调队列,首先先把前K个数放入队列中,放入队列的同时求最大值,遍历数字,如果要进入的数字大于队列中已存在的数字,弹出比该数字小的数字,如果要进入的数字小于队列末端的数字,该数字加入队列。这样队列的首部始终是最大值。思路:字典记录每个元素出现频率,根据出现频率建立小根堆;这道题目属于hard级,一刷跟着卡尔的视频顺下来的代码。一刷跟着卡尔视频顺下来的代码。heapq默认实现小根堆。

2024-06-07 12:29:58 174

原创 代码随想录算法训练营第11天|栈和队列(二)

思路:遍历字符串,遇到左括号,将其对应右括号入栈,遇到右括号,判断是否和栈顶元素相同,相同栈顶元素弹出,不相同,则不是有效括号;最后判断栈是否为空,若为空,则有效。思路:用栈,遍历字符串,若栈不为空且栈顶元素等于字符串对应元素,弹出栈顶元素;思路:遍历字符串,如果遇到数字入栈,遇到运算符,连续弹出栈顶两个元素,运算完成后,在压入栈顶。按照卡尔的代码,用例没有完全通过,由于在干进度,今天先记录在这里,后续debug。

2024-06-06 20:27:47 203

原创 代码随想录算法训练营第10天|栈和队列

思路:定义两个数组,一个存放入栈,一个存放出栈。

2024-06-06 16:25:13 236

原创 代码随想录算法训练营第9天|字符串

思路:用了拼接字符串去掉首位的思路。

2024-06-06 11:34:51 232

原创 代码随想录算法训练营第8天|字符串

思路:一开始用暴力逆置,内存超了;看了卡尔的视频,i每次移动2k,思路很妙。思路:字符串转换成列表,遍历列表,遇到数字替换成‘number’思路:双指针,一左一右向中间靠拢,不断交换两指针数值。感觉join()这个方法理解的不透彻,我得研究一下。

2024-05-17 14:33:47 295

原创 代码随想录算法训练营第7天|哈希表

思路:和前面的字母异位词思路一致,定义一个数组遍历被组成字符串中字母出现的次数,再遍历另个提供字母的数组,若字母在数组中记录,则该记录减1;遍历结束后判断数组中是否存在大于0的记录,若存在,则说明提供字母的数组不够组成该字符串。思路:遍历前两个数组,将任意两个元素之和存入哈希表,key=两数之和,value=两数之和出现的次数;再遍历后两个数组,查看后两个数组元素之和的负数是否在哈希表中,若存在,count加哈希表中该数的次数。思路:和三数之和一样,利用双指针;结果添加之后,记得去重。

2024-05-16 17:26:35 178

原创 代码随想录训练营第6天|哈希

利用哈希表记录其中一个字符串中每个字母出现的次数,再用循环判断第二个字符串中的字母是否在哈希表中,若存在,哈希表中该字母次数减1,直到循环结束,若哈希表不为空,则失败。思路:定义一个哈希表,遍历数组,如果目标值减去当前数在哈希表中,则返回哈希表中的值的位置以及当前值的位置;思路:我的思路用的数组,遍历其中一个列表,判断元素是否在另一个列表中,若存在且结果数组中没有该元素,将该元素加入结果数组。思路:定义一个集合来存放过程结果,如果求和出现在过程结果中,则说明陷入无限循环。

2024-05-15 22:20:57 246

原创 代码随想录算法训练营第4天|链表(二)

思路:快慢指针,快指针每次移动两个指针,慢指针每次移动一个指针,这样如果存在环形链表,快指针和慢指针一定能够相遇。快慢指针相遇之后,慢指针移到起始位置,快慢指针同时移动一个指针,再次相遇的位置就是所求位置。q指针遍历第二个列表,遍历完之后遍历第一个列表,两个指针指向同一个元素,则找到相交点。思路:一开始完全没思路,听了卡尔的讲解,醍醐灌耳。不得不说,卡尔讲算法确实有一套,深入浅出,听完明明白白的。思路:快慢指针法,快指针比慢指针快走N个节点,当快指针走到最后一个节点时,慢指针走到倒数第N+1个节点。

2024-05-15 19:36:43 180

原创 代码随想录算法训练营第3天|链表

实现思路一开始想用两层while循环嵌套,第一层判断下一个节点不为空,第二层while 实现连续的目标值删除,但是报错了,由于时间紧张,先放下,回头再研究为什么不行。思路:增加虚拟头节点,实现第一个节点就是目标值的情况。

2024-05-10 10:55:59 140

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

思路:滑动窗口实现。本质还是利用双指针,当窗口内值大于等于目标值时,左指针加1,循环判断窗口内值是否大于等于目标值,直到左右指针窗口内的值和小于目标值,此时右指针加1。思路:因为这道题之前已经听过讲解,思路还记得。记得思路是一回事,实现又是另一回事。注意:最后返回值的确定 如果有满足条件的结果,返回 若无满足条件的,返回0。思路:一开始用暴力算法解出来了,看了代码随想录的思路,用双指针解了,妙啊。时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)时间复杂度:O(n)

2024-05-09 22:58:08 199

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

思路:知道使用快慢指针,但是实现起来思路刚好和题解相反(等于目标值时后面覆盖前面的),指针定位怎么都想不出该怎么定位,怎么覆盖。题解思路:快指针指向的值不等于目标值,快指针值覆盖慢指针,快慢指针同时移动;当快指针指向的值等于目标值,快指针移动,慢指针不变。思路:利用二分法,不断更新左右区间。时间复杂度:O(logn)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)

2024-05-08 09:15:47 285

原创 数据结构线性表

define Maxsize 50. //定义线性表长度//顺序表的元素int len;//顺序表当前的长度}Sqlist;//顺序表的类型定义动态分配#define InitSize 100 //表长度的初始定义//指示动态分配数组的指针//数组的最大容量和当前个数}Sqlist;

2024-03-08 17:51:57 352

原创 C语言函数

函数放在main函数下面要先声明--先声明后调用函数声明放在头文件。

2024-03-07 11:43:17 399

原创 C语言学习--指针

/数组名内存储了数组的起始地址,a中存储的就是一个地址值。//c语言函数调用是值传递,实参赋值给形参,j=&i。指针变量存储地址-----------int *i_pointer;//c语言函数调用是值传递,实参赋值给形参,j=1。//指针变量的初始化,某个变量取地址来赋值,不能随机写个数。

2024-02-29 21:34:32 411

空空如也

空空如也

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

TA关注的人

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