2022 年 03 月 07 日
- 今天是否学习了训练营的内容:
> 答:有 - 学习时长:2h
- 学习题目:
> 12.最小栈
> 13.验证栈序列
> 14.每日温度 - 遇到的问题:无,记录下学习过程
>- 最小栈:写top和getMin函数时,直接写了return stack.pop()和return minStack.pop(),在运行代码过程中报错,原因是在调用poo函数时出现list out of range,再根据例子去检查代码,才发现是这两步骤导致了stack/minStack为空的情况,已经修改好代码
>- 每日温度:res数组长度需要与temperatures数组长度一致,代码写为:
res = [[] * len(temperatures)]
...
while stack:
res[stack.pop()] = 0
报错还是res的长度超出范围,理解之后修改为:
res = [] * len(temperatures)
替代了之前的三行代码
>- 关于学习的问题:刷题新手,使用python,开始的时候,每次看一个学习题时,先读题,读完题没有思考就直接看视频讲解,理解视频里的Java代码,然后尝试写python代码,写不出来就直接看python代码答案。然后现在开始尝试读完题目思考几分钟,再去看视频解析,看完视频然后写代码,运行然后自己修改提交,不知道这样的学习方法可行不或者有没有其他学习建议?
2022 年 03 月 08 日
- 今天是否学习了训练营的内容:
> 答:有 - 学习时长:2h
- 学习题目:
> 15.接雨水
> 16.队列的基础知识
> 17.用栈实现队列
> 18.滑动窗口最大值 - 遇到的问题:无
>接雨水问题:蛮难的,记录一下,看了两遍视频,创建的栈用来保存的是柱子的索引值,所以这里就被我搞混了,写到后面就开始出现height[i]
和stack[-1]
直接比较之类的
>滑动窗口最大值:这一章是我感觉学过的算法课程中最难的,看了视频三遍,代码写不出来,其中有一个条件说,如果队列的队首元素和窗口最左边元素相等,需要抛出这个队首元素,否则导致窗口包含了非当前窗口的元素。开始写了if的条件判断句,但是看师兄的代码看不懂
`while q[0] 答:有 - 学习时长:2h
- 学习题目:
> 19.设计循环双端队列
> 20.移除链表元素
> 21.K个一组翻转链表 - 遇到的问题:
> K个一组翻转链表
问题描述:for循环内if判断end指针是否指向为空,以及for循环外,同样也有if判断end指针指向为空,且都是符合条件即跳出循环。由于题目已写k值小于或等于链表的长度,所以误以为for循环外的if判断是多余的
理解:for内部的循环是判断最后一个区域的数量不足k个时,那么end None的情况,就需要翻转这个区域,直接连接上就好,此时break是跳出for循环, for循环外的if判断,是为了在for循环内已经判断出的最后一个区域不足k值,无需后续的反转链表操作, 用来跳出整个while循环。此时链表也是连接的,没有断开。
2022 年 03 月 10 日
- 今天是否学习了训练营的内容:
> 答:有 - 学习时长:2h
- 学习题目:
> 22.回文链表
> 23.奇偶链表
> 24.从尾到头打印链表
> 25.链表中倒数第K个节点 - 遇到的问题:无
2022 年 03 月 11 日
- 今天是否学习了训练营的内容:
> 答:有 - 学习时长:2h
- 学习题目:
> 2.反转链表
> 3.反转链表ii - 遇到的问题:有
> 反转链表:
看到别人的题解方法没有理解,错误理解为ans = new ListNode(x.val, ans)中的第二个ans在节点next的参数位,意味着头节点1指向了第二个节点2,即使返回这些节点,连接的next应该不变。
来自师兄的解答:
>反转链表ii:
看算法书get到的新解法:
2022 年 03 月 12 日
- 今天是否学习了训练营的内容:
> 答:有 - 学习时长:30min(训练营)+1.5h(算法书)
- 学习题目:
> 1.K个一组翻转链表
> 2.递归基础知识
> 3.冒泡排序基础知识
> 4.选择排序基础知识 - 遇到的问题:无
> K个一组翻转链表get的新解法
2022 年 03 月 13 日
- 今天是否学习了训练营的内容:
> 答:有 - 学习时长:2h
- 学习题目:
> 4.插入排序基础知识
> 5.快速排序基础知识
> 6.计数排序基础知识
> 7. 归并排序
> 8.最小的k个数 - 遇到的问题:无
> 排序方法太多,理解不难,但是不容易记住
2022 年 03 月 14 日
- 今天是否学习了训练营的内容:
> 答:有 - 学习时长:2h
- 学习题目:
> 8.最小的k个数 - 遇到的问题:无
> 最小的k个数
> 数据流中的中位数
错误地方两处:
> – 第一处判断left和right,通过测试用例[3,2,1],k=2明白的,因为l在quickSort()函数中,通过判断比较mid和index的值时,left和right的值会发生变化,arr还是原来长度的arr,若是加上if left >= right
的判断,都会使得left和right相等,从而输出整个排好序的arr(left和right改变的结果)
> – 第二处错误是,递归调用quickSort函数时,固定了left=0和right=len(arr)-1,就会导致排序范围出错,从而导致mid计算错误,例如,第一次判断mid>index, 此时最小的k个数均在左侧区间,那么需要对左侧区间再排序,此时氛围是left=0到mid,再次排序之后,新的mid->mid2,假设mid2 答:无 - 未学习原因:
> 工作缘故,工作量大,一直忙到下班,没有精力。下班后有看了一题:数组中的逆序对,但是学习状态不佳,看完视频写python代码,写不出来,看师兄的代码,还没有啃明白。不在状态,今天就没有学习。
2022 年 03 月 16 日
- 今天是否学习了训练营内容:yep
- 学习时长:3h
- 学习题目:
> 10.数组中的逆序对
> 11.合并k个升序链表
> 12.合并两个有序数组
> 13.颜色分类 - 遇到问题: yep
> 数组中的逆序对:没有理解代码中的k的含义,觉得多余
k的含义就是做元素替换的位置索引,如果使用append,就会在数组后面追加元素
2022 年 03 月 17 日
- 是否学习了训练营的内容:yep
- 学习时长:1.5h
- 学习题目:
> 14.部分排序
> 16.有序数组的平方
> 17.盛最多水的容器
> 18.两数之和 - 遇到的问题:无
2022 年 03 月 18 日
- 是否学习了训练营的内容:yep
- 学习时长:2h
- 学习题目:
> 分发饼干
> 柠檬水找零
> 移掉k位数字
> 跳跃游戏 - 遇到的问题:无
> – 分发饼干
这个地方出错,之前的代码为:
g = g.sort()
报错为object of type ‘NoneType’ has no len(),记录一下
s = s.sort()
> – 跳跃游戏
错误的写为:if index != len(nums)-1:
卡在了这个地方,忽略了当index为列表长度的时候,是可以再次进入循环,而进行了index+1,所以index的值其实已经变成了len(nums)。
2022 年 03 月 19 日
- 是否学习了训练营内容:是
- 学习时长:2h
- 学习题目:
> 24.摆动序列
> 25.三数之和
> 26.最接近三数之和
> 27.加油站 - 遇到的问题:无
2022 年 03 月 21 日
- 是否学习了训练营内容:是
- 学习时长:3h
- 学习题目:
> 1.二叉树基础知识
> 2.二叉树的前序遍历
> 3.二叉树的中序遍历
> 4.二叉树的后序遍历
> 5.二叉树的层序遍历
> 6.二叉树的锯齿形层序遍历
> 7.从前序与中序遍历序列构造二叉树
> 8.路径总和Ⅱ - 遇到的问题:暂时没有,视频内容可以理解
2022 年 03 月 22 日
- 是否学习了训练营内容:是
- 学习时长:2h
- 学习题目:
> 9.二叉树的最近公共祖先
> 10.二叉树的右视图
> 11.二叉树展开为链表
> 12.将有序数组转换为二叉搜索树
> 13.把二叉搜索树转换为累加树 - 遇到的问题:
> 将有序数组转换为二叉搜索树
写代码时犯的错误是超出递归最大深度,因为构建左子树采用的数组值的范围从start到mid,就会导致递归的结束条件start>end不会实现,所以需要构建左子树范围从start到mid-1
> 把二叉搜索树转换为累加树
这里设置sum的全局变量没有成功,改成了添加函数的参数来计算各节点的节点值。
2022 年 03 月 23 日
- 是否学习了训练营内容:是
- 学习时长:1.5h
- 学习题目:
> 删除二叉搜索树中的节点
> 二叉树的序列化和反序列化 - 遇到的问题:无
2022 年 03 月 24 日
- 是否学习了训练营内容:是
- 学习时长:2h
- 学习题目:
> 完全二叉树的节点个数
> 二叉树的最大深度
> 二叉树的最小深度
> 二叉树的所有路径 - 遇到的问题:还行,今天学习的内容不难。
2022 年 03 月 25 日
- 是否学习了训练营内容:是
- 学习时长:1.5h
- 学习题目:
> 平衡二叉树
> 左叶子之和
> 找树左下角的值 - 遇到的问题:无
2022 年 03 月 27 日
- 是否学习了训练营内容:是
- 学习时长: 3h
- 学习题目:
> 二叉搜索树的最小绝对差
> 最大二叉树
> 完全二叉树的节点个数
> 删除二叉搜索树中的节点 - 遇到的问题:无
> 完全二叉树的节点个数
利用完全二叉树的性质,完全二叉树比普通二叉树特殊,但是又没有满二叉树特殊,满二叉树的节点计算,可以采用2^deepOfBT-1,而普通的二叉树的节点计算,就可以采用递归的方式:return self.countNodes(root.left) + self.countNodes(root.right)
。
2022 年 03 月 28 日
- 是否学习了训练营内容:是
- 学习时长:4h
- 学习题目:
> 二分查找
> 搜索插入位置
> 在排序数组中查找元素的第一个和最后一个位置
> 搜索旋转排序数组
> 搜索二维矩阵
> 寻找两个正序数组中的中位数 - 遇到的问题:暂无,寻找两个正序数组的中位数好晕,太耗时。
2022 年 03 月 29 日
- 是否学习了训练营:是
- 学习时长:3h
- 学习题目:
> 有效三角形的个数
> 0 ~ n-1中缺失的数字
> 在排序数组中查找数字
> 数组中的逆序对
> 寻找峰值
> 第一个错误版本
> 山脉数组的峰顶索引
> 有效的完全完全平方数 - 遇到的问题: 遍历result结果范围错误,忽略了result整体长度固定,而在每次递归调用过程中,改变的值只有一个,其他未涉及的result值为0,导致后面赋值过程出错。
2022 年 03 月 31 日
- 是否学习了训练营:是
- 学习时长:1h
- 学习题目:岛屿数量
- 遇到的问题:无,终于理清代码。
2022 年 04 月 02 日
- 是否学习了训练营:是
- 学习时长:2h
- 学习题目:
> 位运算基础知识
> 丢失的数字
> 2的幂
> 位1的个数
> N皇后 - 遇到的问题:无
2022 年 04 月 06 日
- 是否学习了训练营:是
- 学习时长:1h
- 学习题目:
> 火柴拼正方形
> 爬楼梯 - 遇到的问题:暂无
2022 年 04 月 07 日
- 是否学习了训练营:是
- 学习时长:2h
- 学习题目:
> 最小子序和
> 零钱兑换
> 最小路径和
> 买卖股票的最佳时机 - 遇到的问题:无
2022 年 04 月 09 日
- 是否学习了训练营:是
- 学习时长:3h
- 学习题目:
> 分割等和子集
> 打家劫舍
> 打家劫舍2
> 打家劫舍3
> 最长递增子序列 - 遇到的问题:无
2022 年 04 月 10 日
- 是否学习了训练营:是
- 学习时长:5h
- 学习题目:
> 编辑距离
> 买卖股票的最佳时机(1,2,3,4)
> 最佳买卖股票时机含冷冻期
> 买卖股票的最佳时期含手续费
> 完全平方数
> 三角形最小路径和
> 不同路径(1,2)
> 整数拆分
> 地下城游戏
> 分割等和子集
> 最长连续递增序列
> 最长重复子数组
> 最长公共子序列
> 最长回文子序列
> 最长回文子串 - 遇到的问题:无,渐入佳境
2022 年 04 月 11 日
- 是否学习了训练营内容:是
- 学习时长:3.5h
- 学习题目:
> 数组中重复的数字
> 二维数组中的查找
> 替换空格
> 从尾到头打印链表
> 用两个栈实现队列
> 斐波那契数列
> 青蛙跳台阶问题
> 旋转数组的最小数字
> 矩阵中的路径
> 机器人的运动范围 - 遇到的问题:无
2022 年 04 月 12 日
- 是否学习了训练营内容:是
- 学习时长:3h
- 学习题目:
> 删除链表的节点
> 调整数组顺序使奇数位于偶数前面
> 链表中倒数第k个节点
> 反转链表
> 合并两个排序的链表
> 树的子结构
> 二叉树的镜像
> 对称的二叉树
> 包含min函数的栈 - 遇到的问题:无
2022 年 04 月 14 日
- 是否学习了训练营:是
- 学习时长:4h
- 学习题目:
> 从上到下打印二叉树(1,2,3)
> 二叉搜索的后序遍历序列
> 复杂链表的复制
> 二叉搜索树与双向链表
> 数组中出现次数超过一半的数
> 最小的k个数
> 数组流中的中位数
> 连续子数组的最大和
> 把数组排成最小的数
> 把数字翻译成字符串 - 遇到的问题:无
2022年 04 月15 日
- 是否学习了训练营:是
- 学习时长:3h
- 学习题目:
> 把数字翻译成字符串
> 礼物的最大价值
> 丑数
> 第一个只出现一次的字符
> 数组中的逆序对
> 两个链表的第一个公共节点
> 在排序数组中查找数字
> 0~n-1中缺失的数字
二叉搜索树的第k大节点 - 遇到的问题:无