自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录DAY14打卡 ● 104.二叉树的最大深度 ● 111.二叉树的最小深度● 222.完全二叉树的节点个数

思路:需要注意的是如果左子树是空的 那么这个就不算路径 也就是说我们需要判断左右子树是不是空的 如果有一个为空则计算另一个子树的长度即可 如果不为空就需要两者用min取最小值 并且需要在return的时候+1 因为root没有被计算进去。思路:左遍历右遍历后用max函数选出最大值即可。思路:左右两边都遍历加起来最后加1即可。● 222.完全二叉树的节点个数。● 104.二叉树的最大深度。● 111.二叉树的最小深度。

2024-03-12 23:45:20 337 1

原创 代码随想录day13打卡● 层序遍历 ● 226.翻转二叉树 ● 101.对称二叉树 2

层序遍历的解释:层序遍历与图论中的深度遍历是相似的 一层一层的遍历 从左到右一层一层的去遍历二叉树。而这种我们不能直接通过二叉树来实现,于是我们就借助队列,因为队列是先进先出,符合一层一层遍历的逻辑。用for循环遍历queue 让cur等于queue左边弹出的 level里面加入cur.val 如果cur左边存在就让左边导入level 右边则右边导入level 然后将level的导入result。思路:我们首先检查两边是否有空节点 然后检查两边节点的值是否相同 此时才做递归,做下一层的判断。

2024-03-11 23:11:00 364

原创 代码随想录DAY12打卡● 理论基础● 递归遍历 ● 迭代遍历

写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。递归与非递归的区别:1、递归就是函数调用函数本身,运行起来就是函数嵌套函数,层层嵌套,所以函数调用、参数堆栈都是不小的开销,但是程序简单。确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。下面用力扣的前中后序遍历的题来进行讲解。

2024-03-10 23:23:36 332 1

原创 代码随想录day11打卡● 239. 滑动窗口最大值● 347.前 K 个高频元素

思路:滑动窗口的长度为k 每一次在遍历出一个最大值后pop出一个元素 push进一个元素 这样就实现了往右移动一位 于是我们可以用队列来实现 定义pop函数与push函数。#如果push的数值大于入口元素的数值,那么就将队列后端的数值弹出,直到push的数值小于等于队列入口元素的数值为止。对于如何统计元素的出现频率 我们可以采用字典 将列表中的元素遍历进字典 每进一个次数加一 就可以统计元素出现频率了。#这样就保持了队列里的数值是单调从大到小的了。于是可以写出下面的代码。下面是这一条的代码实现。

2024-03-06 13:23:55 327 1

原创 代码随想录day10打卡 ● 20. 有效的括号● 1047. 删除字符串中的所有相邻重复项● 150. 逆波兰表达式求值

思路:这个是需要删除字符串里面相邻的重复项 如果删去了一个重复项后又因为位置的改变出现的重复项也要删去 直到不存在重复项为止 于是我们可以创造一个stack 遍历字符串将字符串放入stack中 如果存在即将放入的字符串与已经放入的字符串相同 就弹出已经放入的字符串与即将放入的字符串 最后就可以得到结果。给定逆波兰表达式总是有效的。平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 )。该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * )。

2024-03-03 14:07:08 351

原创 代码随想录day9打卡 ● 理论基础● 232.用栈实现队列● 225. 用队列实现栈

思路:队列是两端开口的 先进先出 而栈是一段开口的 先进后出 所以我们需要设置两个栈 一个是用于进的栈 一个是用于出的栈 in负责push put负责pop。思路:我们用deque()函数来创建一个双端队列 这个队列是先进先出 然后判断队列的进出方向即可 下面是代码。225. 用队列实现栈。

2024-03-03 13:27:47 383

原创 代码随想录day8打卡(本人由于一刷 所以两道选做的题这里就跳过了)字符串总结

KMP算法我们在这里就不过多赘述了 想了解的可以去看代码随想录 里面十分详细。在Python中,字符串的问题往往可以通过转换为列表来解决。而双指针的用法在字符串的问题中也是十分的有效 比如下面这道题。

2024-03-01 17:53:00 343

原创 代码随想录day7 ● 344.反转字符串● 541. 反转字符串II● 卡码网:54.替换数字● 151.翻转字符串里的单词● 卡码网:55.右旋转字符串

是什么意思 比如我们的步子一步是跨2k 但是在地上只留下了k的印记 当剩余的路小于k的时候我们一步就到了终点 但是印记比剩余的路大 所以就是剩余字符全部反转 可是如果剩余的路小于2k大于k 虽然我们一步迈过去了 但是留在地上的印记只有k 于是根据描述就可以写出下面的代码。思路:我们用双指针法 left是左 right是又 给left与right设置一个范围 然后用第一个题的办法交换就可以了 下面是代码。思路:python有isdigit()函数可以判断是否是数字 所以直接用for遍历即可。

2024-02-28 22:03:14 324

原创 day6● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和

语言为Python454.四数相加思路:这道题与Python的第一题两数之和很相似 python两数之和是找两个数=target 这个题是找4个数相加为0 即a+b+c+d=0 我们可以将其理解为 a+b=-c-d 即target是-c-d 也就是-(a+b)也就是说我们找出两个数相加后 在另外两个数组里面找出等于这两个数相加的负数就可以下面是代码。

2024-02-28 18:57:50 849

原创 代码随想录day5 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

第二个思路:我们用哈希表与集合 创造一个hashmap={} 用for遍历nums1 用hashmap[i]=hashmap.get(i,0)+1 nums1里面的元素添加到hashmap里面作为value 并且每添加一次 次数+1 随后创造一个集合res=set() 因为集合里面不能出现重复的元素 所以我们将nums2与nums1里面都存在的元素直接加入到集合里面就可以 最后以列表的形式返回。第一个思路:暴力法遍历 就不多写了 下面是代码。本文章所用到的语言为python。242.有效的字母异位词。

2024-02-27 00:01:56 348

原创 代码随想录DAY4 24. 两两交换链表中的节点19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

语言为python 题目中所有的参考资料都来自于代码随想录大家可以自行查看24. 两两交换链表中的节点题目解析:题目要求需要交换相邻链表节点 只能进行节点交换 然后返回头节点 不得修改节点内部的值。

2024-02-26 20:40:09 1230

原创 代码随想录day3 203.移除链表元素 707.设计链表 206.反转链表

判断之后我们就需要让current{即目前的指针)指向index 首先定义current=self.dummy_head.next 让current指向除虚拟头结点的第一个链表 然后用for来让current不断后移 for i in range(index) current=current.next 这样current不断后移 一直到指向index 下面是代码实现。让current=dummy_head.next 这时current指向的是头结点 然后用for i in range(index)

2024-02-25 16:46:14 807

原创 代码随想录DAY2 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

思路:首先创造一个nxn的矩阵 我们设他们的值都为0 左上角的右走 左闭右开 右上角的下走 左闭右开 以此类推 但是可能存在n不为偶数 就会存在一个中心点 这时候我们判断一下n是否为奇数 如果为奇数就直接让中心点处的值为nxn即可 因为螺旋矩阵 中心点一定是最后取到的 为螺旋的终止部位 所以中心点一定是矩阵的最大值 为nxn。不排序所对应的数组就不一定是递增的 由于负数逐渐减小到0后变为正数逐渐增大 所以头部的负数跟尾部的正数会偏大。思路:首先提供的nums是递增的一个数组 有负数的存在 所以平方后如果。

2024-02-22 15:50:40 348 1

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

做题时的思路:首先我们设置一个left与一个right 将下标0为left 下标为len(nums)-1 即数组的最右端为right 形成一个两边都是闭区间 即[left,right] 既然是二分法 那么就要取中间值 我最开始直接将middle等于(right-left)//2 但是我发现当left大于0时 取到的middle不对 于是将其改成(right-left)//2+left 这样即使left大于0(即target在middle的右边)再一次取值的时候也能正确的取到middle。

2024-02-21 16:01:58 581

空空如也

空空如也

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

TA关注的人

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