自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码营打卡day18

就是在找给定二叉树的最后一行最左边的值(注意这里最左边的值未必是左子节点), 也就是找最大深度的最左边的叶子节点所以本体需要两个全局变量, 一个是maxlen来记录最大深度, 另一个是result记录最大深度最左节点的数值. 终止条件是遇到叶子节点统计最大深度.单层递归的逻辑是找到最大深度以后回溯, 直到遍历所有的叶子节点每次调用递归函数的时候都将当前的执行环境压入调用栈, 当递归函数返回时(即到达叶子节点), 程序会自动恢复到上次调用的状态, 这个时候接着更新depth的值 , 也回到上次调用的状态。

2024-05-27 19:34:38 402

原创 代码营打卡 Day17

平衡二叉树就是看任何节点的左右子树高度差是否不超过1, 求高度考虑用后序遍历的递归来做首先考虑参数和返回值, 参数就是当前传入的根节点, 返回值就是以当前传入节点为根节点的树的高度. 如果当前传入节点为根节点的二叉树已经不是平衡二叉树, 就不需要返回高度了, 直接返回-1即可然后是终止条件, 递归过程中遇到了空节点就终止, 返回0, 表明当前节点的高度为0单层递归的逻辑是看左右子树的差值是否小于1, 如果不小于就返回-1, 否则返回当前二叉树的高度。

2024-05-27 01:32:49 241

原创 代码营打卡 Day16

二叉度有高度也有深度, 稍微区分一下二者. 深度是这个节点离根节点的距离, 可以理解成洞穴, 每往下一层就加1, 所以一般采取前序遍历, 即中左右的顺序, 往下遍历就加1. 高度是一个节点到叶子节点到距离, 可以理解成高楼, 一般采用后序遍历, 即左右中的顺序, 将叶子节点的高度返回给父节点, 父节点再做一个加1这道题求二叉树的最大深度, 其实也就是根节点的高度, 所以采用后序遍历。

2024-05-26 18:40:29 300

原创 代码营打卡 Day15

层序遍历二叉树就是按照层数遍历二叉树, 并且返回对应的值, 考虑借助队列完成这个问题以这个二叉树为例, 首先把根节点6加入队列, 并且记录下队列的size1, 然后将6弹出, 将他的左右子节点4和7加入队列, 同时记录下队列的size为2(这意味着后面弹出两个元素记做第二层), 这里要注意需要用size = que.size()直接记录下, 而不能在后面的while中用while(que.size()--), 因为que.size在过程中不断变化。

2024-05-26 13:49:45 263

原创 代码营打卡 Day14

确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程.

2024-05-25 18:13:23 298

原创 代码营打卡Day13

单调队列的经典题目滑动窗口移动的时候, 从滑动窗口来说要pop掉一个元素, 并且push进一个元素. 如果这个pop掉元素刚好是单调队列中的front元素(即最大值), 那么将que中的front元素给pop掉. 加入一个元素时, 检查这个元素和栈尾(back)元素的大小, 如果这个元素大于back的元素, 就把小于它的back元素全部弹出伪代码如上, python实现的时候注意, 弹出队列左边元素用右边元素直接用pop(), 即对应pop_back()

2024-05-23 13:34:08 230

原创 代码营打卡 Day11

这道题是检验一列括号是否左右对称完整的问题, 考虑用栈的方法解决, 即遍历所有括号, 遇到左括号就把对应的右括号放入栈内, 遇到右括号就弹出栈口的左括号, 看是否对应, 有以下3种错误的方式:1. 字符串遍历完了, 栈不为空 -- 左括号多了2. 右括号与栈口弹出的不匹配, 则出现了匹配错误3. 没遍历完, 栈就空了-- 右括号多了。

2024-05-22 08:50:06 664

原创 代码营打卡 Day10

队列的规则的先入先出, 而栈的规则是先入的后出, 所以需要用两个栈, 先把队列的元素放到入栈中, 然后再用出栈把元素取出, 就实现了队列的出入规则这里注意 1. pop对空队列是非法操作, 但题目中默认是合法操作, 所以不考虑2. 入栈的元素要全部放入出栈中, 否则会造成混乱要实现四个功能 1. push 把元素放入队列尾部 2. pop从队列首部移除元素 3. 返回队列首部的元素 4. empty 判断队列是否为空。

2024-05-18 18:43:06 376

原创 代码营打卡 Day9

如果i, j不相等, j要回退, j前一个next数组所对应的值, 回退到对应的下标, j = next[j-1], 遇到冲突需要连续回退, 所以要用while。如果i和j指到的元素相等, 那么j向后移动一位, next[i], next数组中对应i下标存入j的值, 然后i往后移动一位。两个指针 j指向前缀末尾位置, j的值还代表i之前(包括i) 子串最长相等前后缀长度。next第一个位置的数字被设置为0, j从0开始, i从1开始。next数组要记录最长相等前后缀长度, 要完成4个任务。

2024-05-17 14:41:21 139

原创 代码营打卡 Day8

也就是在 Python 中处理字符串切片时,如果切片的结束索引超出了字符串的实际长度,Python 不会引发错误,而是简单地返回从起始索引到字符串末尾的切片。那么就不需要考虑超出边界的情况。

2024-05-16 12:52:39 824

原创 代码营打卡 Day7

这道题考查四个数组中, 有几组组合可以组成和为0. 考虑把四个数组划分为两个, 两两一组, 如果划分为一三的话, 复杂度就是O(n**3)了, 所以不推荐然后就是把a+b的结果存到字典中, key是a+b的数值, value是a+b出现的次数, 然后再遍历c+d, 看是否有需要的a+b值(即-c-d的值)已经出现在字典中. 如果有的话, count加上value值(这里注意是加value值而不是1), 因为要计算一共有多少组组合这里稍微注意一下这一行defaultdict还有一种写法。

2024-05-14 21:52:21 607

原创 代码营打卡 Day6

Counter是 Python 标准库模块中的一个类,用于对数据中的元素进行计数。它可以接收多种形式的输入,如列表、字符串等,并返回一个字典,其中的键是输入数据中的唯一元素,值是这些元素在输入数据中出现的次数. 例如s可以是任何可迭代的数据类型,例如字符串、列表或元组。Counter(s)会创建一个计数器对象,其中包含了s中每个元素的出现次数。a_count将是一个字典类型的对象,其中包含了从s中提取的元素及其对应的计数。还可以返回数据中出现次数最多的元素及其计数。

2024-05-13 21:20:05 1002

原创 代码营打卡 Day4

首先要改变1的指向, 就必须知道它前一个点的位置, 做出以下的改变才是成功交换了1和2两个节点所以可知, 在初始情况下, cur应该指向head前一个节点, 即dummyhead点, 才能完成head和下一个点的交换, 所以cur = dummyhead, 并且可知, 如果要交换3、4节点, cur必须在2。

2024-05-11 18:23:47 960

原创 代码营打卡 Day3

用虚拟头节点, 首先值得注意的是python中创建虚拟头节点的方式这行代码的作用是创建一个虚拟的头节点(dummy head),并将其next指针指向链表的真实头节点head。用current这个临时指针进行遍历, 因为头指针如果改了就找不到链表了另外值得注意的是要确定current.next不能为空值,否则下一步current.next.next就是对空取next,是不合法操作。

2024-05-11 14:41:53 710 1

原创 代码营打卡 Day2

一个包含负数的有序排列的数组,其平方的最大值一定是在数组的左右两边所以用两个指针i 和 j, 分别指向数组的首和尾,比较首尾两个数字哪个平方更大,将大的那个写入新数组res之中, 由于要求新数组按照从小到大排列,所以按照由大到小的顺序排入新数组如果是i边大, 那么将i对应大平方值写入序列号为k的res中,i ++且k--如果是j边大,那么将j对应较大的平方值写入序号为k的res中, j-- 且 k--这里要注意:1. 初始res的方法 res = [float('inf')] * len(nums)2. w

2024-05-10 14:32:52 366

原创 代码营打卡 Day1

二分查找要注意区间的开闭问题,从而来判断比较区间的时候是否要包含.在左闭右闭区间中,[left, right], left和right可以同时取到,所以应该是而在左闭右开区间中,显然left和right无法同时取到,所以应该是。

2024-05-09 15:44:07 355

空空如也

空空如也

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

TA关注的人

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