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()
    s = s.sort()
    报错为object of type ‘NoneType’ has no len(),记录一下
    > – 跳跃游戏

    错误的写为: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大节点
  • 遇到的问题:无