随想曲
代码随想录 day08 反转字符串 反转字符串2 替换数字 单词反转顺序 右旋
反转字符串 经典双指针法 头尾交换 反转字符串2 难点在于模拟题目设定的条件 一开始不明白怎么模拟 后来看了一行标准源码 就明白了 设定步长就可以了 然后对迭代器位置进行约束 替换数字 本题为acm模式 也是一道双指针解题 注意这道题需要扩容之后 从后往前填充 免去了从前往后填充时需要移动元素 单词 ......
代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点
一、235. 二叉搜索树的最近公共祖先 题目链接: LeetCode 235. 二叉搜索树的最近公共祖先 学习前: 思路: 对于二叉搜索树,root不为空时与p和q的关系有4种,分别对应返回 root<p && root<q 递归调用右孩子 rootp || rootq return root ro ......
day07 代码随想录算法训练营 15. 三数之和
题目:15. 三数之和 我的感悟: 加油,我可以的。不能放弃。 理解难点: 双指针 思路打开 边界考虑 代码难点: 缩进问题 continue是跳出循环条件 我以前分不清循环条件和判断条件。哈哈哈。一个是if 一个是while / for 总结概括: 只要不放弃就行!!!!!!!! 代码示例: cl ......
day07 代码随想录算法训练营 383. 赎金信
题目:383. 赎金信 我的感悟: 我自己独立做出来了。 理解难点: so easy 代码难点: 扩展理解defaultdic, 定义的时候 hashmap = defaultdict(int) hashmap拿到一个不存在的值的时候会设置为0 int可以省略吗? 不可以,int是工厂函数。用于设置 ......
day07 代码随想录算法训练营 454. 四数相加 II
题目:454. 四数相加 II 我的感悟: 把握题意:这道题目是四个独立的数组,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以 有点像上学那会,提醒自己要注意题意。审题很关键。审题的要点是要明白题目说什么。 理解难点: 为什么可以只遍历AB和CD,不遍历AC和BD? 都可以 ......
代码随想录 day07 四数相加 赎金信 三数之和 四数之和
四数相加 题目需要找满足和为0的四元组 但是只要求统计个数 不要求具体的四元组 而且四元组是可以重复的 考虑使用hash map 由于设计到四个元素 先遍历两个集合 记录一下两个集合的元素和的所有可能值 记录在map中 为什么要用map 因为需要同时记录出现的值和出现的次数 值作为键 次数作为值 然 ......
代码随想录二叉树day14part1
二叉树day14 part1 题型: 1.二叉树理论基础 1.1 二叉树种类 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 完全二叉树 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最 ......
代码随想录算法训练营第二十一天|530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数,236. 二叉树的最近公共祖先
一、530.二叉搜索树的最小绝对差 题目链接: LeetCode 530.二叉搜索树的最小绝对差 学习前: 思路: 中序遍历(递归+迭代)。首先中序遍历,将数值按照递增的方式存储,然后再计算最小绝对差 学习后: 中序遍历+双指针。在中序遍历中,一直存在指针指向前序结点,故在遍历过程中就可计算最小绝对 ......
day06 代码随想录算法训练营 1. 两数之和
题目:1. 两数之和 我的感悟: 梦开始的地方 理解难点: map究竟是什么 存放已经遍历的元素值 什么时候需要用map? 遍历一边,这里面的元素值,后面都有可能要用就存起来。 代码难点: 掌握enumerate用法 [ɪ'njuːməreɪt] e + numer + ate 助记: e-出 + ......
day06 代码随想录算法训练营 202. 快乐数
题目:202. 快乐数 我的感悟: 2024年了,你快不快乐?找找自己的原因。 理解难点: 分离数组 快乐数字的定义, 不快乐的数字会无限循环 代码难点: divmod用法, set用法 总结概括: 快乐就完事了! 代码示例: class Solution: def isHappy(self, n: ......
day06 代码随想录算法训练营 349. 两个数组的交集
题目:349. 两个数组的交集 我的感悟: 轻轻松松 理解难点: python中 字典存,集合去重 代码难点: del要掌握 dic.get(i,0) +1 要掌握 总结概括: 无 代码示例: class Solution: def intersection(self, nums1: List[in ......
编程随想曲周刊(第61期)
这里记录每周的所见所闻,周日发布。点击阅读原文可以直接访问文章链接。 工具 astropad slate: free public beta OrbStack-Docker containers sing-box-代理工具 文章 我换手机了 陶勇塌房,早在一年之前就已注定 时政 官宣!苏州机场,有戏 ......
day06 代码随想录算法训练营 242. 有效的字母异位词
题目:242. 有效的字母异位词 我的感悟: 卡尔的思路,挺好。简单易懂。 理解难点: 没有难点 总结概况: 建立数组存 遍历一遍 ++ 遍历一遍 -- 再遍历一遍 判断0 代码示例: class Solution: def isAnagram(self, s: str, t: str) -> bo ......
day04 代码随想录算法训练营 24. 两两交换链表中的节点
题目:24. 两两交换链表中的节点 我的感悟: 我感觉,python中对链表的概念,很弱。 链表在现在语言中,用的不多。 先搁置。 理解难点: 可以看懂代码。 总结概括: 代码示例: # Definition for singly-linked list. # class ListNode: # d ......
代码随想录算法训练营第二十天|654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树
一、654.最大二叉树 题目链接: LeetCode 654.最大二叉树 学习: 思路: 前序遍历 方法参数:(int[] nums, int start, int end) 返回类型:TreeNode 终止条件: if(end-start==0) return null; if(end-start ......
day03 代码随想录算法训练营 206. 反转链表
题目:206. 反转链表 我的感悟: 理解cur是什么? 相信自己!! 代码难点: cur = head 可以省略不 每一个步骤里的cur是什么 代码示例: # Definition for singly-linked list. # class ListNode: # def __init__(s ......
代码随想录 day06 有效的字母异位词 返回数组的交集 找快乐数 两数之和
有效的字母异位词: 思路比较简单 由于范围比较小 只有小写字母为范围 利用26大小的数组 遍历字符串 第一个串在对应下标++ 第二个++ 然后数据存在不为零就是不一样的 不存在则时字母异位词 返回数组的交集 由于要返回的是交集 就是查找两个集合出现的元素 想到要使用hash map 具体的数据结构而 ......
代码随想录算法训练营第14天 | lc104、lc111、lc222
(本合集全部为Go语言实现) 相关文章链接:104题解 111题解 222题解 相关视频链接: Leetcode104 状态:这种简便的写法一开始忘了,看了题解才想到 实现过程中的难点:需要首先明确最终答案的得出是模拟了那种遍历方式 个人写法 func maxDepth(root *TreeNode ......
代码随想录算法训练营第13天 | 树的层序遍历、lc226、lc101
(本合集全部为Go语言实现) 相关文章链接:层序遍历题解 226题解 101题解 相关视频链接: Leetcode102 状态:迭代写法秒了,递归写法确实吗,没太能想到 实现过程中的难点:递归写法中,思想要转变。迭代写法是真正的按层遍历,递归写法是以类似深度优先的方式将遍历结果放到不同的层级的集合当 ......
代码随想录 小结02 链表
第一题 移除链表元素 这题比较简单 使用dummyHead的方式会比较简单 不需要对头指针进行单独处理 但是空间开销会大一些 第二题 设计链表类 这个没什么好说的 感觉有可能一些细节会忘记 需要经常复习的一块 第三题 反转链表 这题难度不大 用一个tmp指针存储一下当前指针的next 然后直接反转就 ......
代码随想录算法训练营第十八天 | 513.找树左下角的值,112. 路径总和,113.路径总和ii,106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树
一、513.找树左下角的值 题目链接: LeetCode 513.找树左下角的值 学习前: 思路: 层序遍历。采用递归和迭代两种方式 递归:定义最大深度和目标值两个成员变量,方法参数是结点和当前结点的深度;返回类型为void;终止条件为结点为空;单次循环内容为判断该节点是否符合目标要求,且分别传入左 ......
代码随想录 小结01 数组
数组篇一共有五个题目 第一题二分查找 值得注意的是,要自己想好 区间的边界到底是写左闭右开 还是左闭右闭 根据边界不同 while的条件和左右指针的移动会有差别 目前我的习惯是写左闭右开 还是固定一下习惯比较好 第二题是实现数组类的erase() 使用快慢指针可以做到在数组原地进行指定元素的移除而不 ......
代码随想录算法训练营第12天 | 树的遍历
(本合集全部为Go语言实现) 相关文章链接:递归遍历 迭代遍历 统一迭代法 相关视频链接: Leetcode94 状态: 实现过程中的难点:迭代法的模拟过程比较难想 个人写法 递归方式 func inorderTraversal(root *TreeNode) []int { var res []i ......
day03 代码随想录算法训练营 203. 移除链表元素
题目: 203. 移除链表元素 我的感悟: 题目里的节点是已经给好的, 创建虚拟节点,是为了方便处理头节点。 加油,我可以的!!!!! 理解难点: 节点已经给好的 创建虚拟节点 代码难点: p是临时变量,类似于for i in range(10) 这里的i,本身是用完就扔的。 返回值为什么不能是p. ......
代码随想录算法训练营第11天 | lc239、lc347
(本合集全部为Go语言实现) 相关文章链接:239题解 347题解 相关视频链接: Leetcode239 状态:记得是单调队列,但实际忘了实现细节,想了很久 实现过程中的难点:首先是得想到用单调队列解题,其次要搞明白单调队列的入队和出队的实现细节 本题中单调队列的细节 为什么不是优先队列:优先队列 ......
代码随想录day04 两两交换链表中的节点 删除链表的倒数第N个节点 链表相交 环形链表
两两交换链表中的节点题目: 这题画一下链表会比较清晰 写写画画指针位置很快就可以写出来 一开始以为一个tmp就够用了 写着写着发现需要多一个 代码: 删除链表的倒数第N个节点: 没什么思路 只好先看看视频思路 视频思路很简单也很清晰 只需要两个指针 一快一慢 两指针的间隔就是n 这样当快指针到末尾的 ......
代码随想录day03 链表删除 链表类的实现 反转链表
首先是链表的删除操作 热身题 这里使用了一个新的头指针 这样在删除头指针的时候就不需要进行额外的判断 然后是链表类的实现 需要一点背诵加上深刻理解 有时候理解了但是写起来还是会有些指针边界的小问题 应该多写写多记一下就会好了 还有就是手写链表要常复习吧 学习新语言应该也要对这些常用的数据结构进行手写 ......
代码随想录算法训练营第十七天 | 110.平衡二叉树,257. 二叉树的所有路径,404.左叶子之和
一、110.平衡二叉树 题目链接: LeetCode 110.平衡二叉树 学习: 思路: 后序遍历。实际上是由叶结点到根结点,若有一颗子树不是平衡二叉树,则直接返回给根结点 二、257.二叉树的所有路径 题目链接: LeetCode 257.二叉树的所有路径 学习: 思路: 递归+回溯。因为是线=先 ......
day02 代码随想录算法训练营 209. 长度最小的子数组
题目: 209. 长度最小的子数组 我的感悟: 滑动窗口, 每次计算当前位置的值, 满足要求就缩小, 这样左右两个指针都不回退。一直右走。 这个原理,还没太理解,感觉要在看看左神的视频。 理解难点: 为什么可以不回退。 代码难点: for 循环右边界 里面while判断是否满足要求 总结概括: 无 ......