随笔分类 - 刷题
摘要:代码随想录 LeetCode 110. 平衡二叉树 carl #递归 思路 方法一: 递归求高度、递归判断是否平衡 方法二: 递归求高度过程中判断是否平衡 细节 略 LeetCode 257. 二叉树的所有路径 carl #递归 思路 回溯算法 LeetCode 404. 左叶子之和 carl #递
阅读全文
摘要:代码随想录 LeetCode 104. 二叉树的最大深度 carl #递归 #二叉树遍历 #层序遍历 #队列 #广度优先 思路 递归 层序遍历 细节 略 LeetCode 111. 二叉树的最小深度 思路 递归 递归的条件怎么写,随想录的有些绕,按CS 106B来 层序 细节 注意最小深度的定义 L
阅读全文
摘要:代码随想录 LeetCode 102.二叉树的层序遍历 carl #二叉树遍历 #层序遍历 #队列 #广度优先 思路 队首是待访问节点,每访问一个节点,将其左子和右子加入队列 细节 如何知道某一层是否遍历完? 在访问完一层时,队列中刚好是下一层节点,因此可在每层访问前记下当前层节点个数 LeetCo
阅读全文
摘要:代码随想录 LeetCode 144. 二叉树的前序遍历 LeetCode 145. 二叉树的后序遍历 LeetCode 94. 二叉树的中序遍历 carl #二叉树遍历 #递归 思路 递归的写法:CS 106b中关于递归的写法: base case recursive case 迭代的写法: 栈
阅读全文
摘要:代码随想录 LeetCode 239. 滑动窗口最大值 carl #优先级队列 #单调队列 思路 优先级队列解法: 窗口移动过程中,不断将新元素加入优先级队列,如果最大值不在范围内,则弹出最大值 $$T(n) = O(nlogn)$$ $$S(n) = O(n)$$ 单调队列解法: 实现一种数据结构
阅读全文
摘要:代码随想录 LeetCode 20. 有效的括号 carl #栈 思路 左括号入栈,右括号出栈,如果出栈时栈为空或不匹配,或者最终栈不为空则false 细节 LeetCode 1047. 删除字符串中的所有相邻重复项 carl #栈 #字符串 思路 使用栈的思想,而非一定使用栈适配器本身 细节 栈是
阅读全文
摘要:代码随想录 LeetCode 232. 用栈实现队列 carl #栈 #队列 思路 stack和queue的接口和性质 细节 stack的pop()没有返回值 LeetCode 225. 用队列实现栈 carl #栈 #队列 思路 stack和queue的接口和性质 细节 queue可以获取最后元素
阅读全文
摘要:代码随想录 LeetCode 344. 反转字符串 carl #字符串 #数组 思路 本质是数组反转 LeetCode 541. 反转字符串 II carl #字符串 #数组 思路 细节 遇到大跨度的updation,总想不到 LeetCode 剑指 Offer 05. 替换空格 carl #字符串
阅读全文
摘要:代码随想录 LeetCode 454. 四数相加 II carl #哈希 思路 分组求和,再作判断 细节 不必使用unordered_multimap,只用计数 class Solution { public: int fourSumCount(vector<int>& nums1, vector<
阅读全文
摘要:代码随想录 LeetCode 82. 删除排序链表中的重复元素 II #链表 #双指针 #递归 思路 方法一:双指针法 类似滑动窗口,快慢指针的移动时机 方法二:递归法 迭代是不断更新双指针,递归是不断更新链表,大链表化小链表 递归的调用时机 细节 // 双指针法略 // 递归法 class Sol
阅读全文
摘要:代码随想录 LeetCode 242. 有效的字母异位词 carl #哈希 #Unicode 思路 用哈希表存储两个字符串中每个字符出现的次数 比较 细节 为什么不用STL中的unordered_map? 大材小用了,使用STL可能哈希函数十分复杂,因此简单情况下更适合自行构造 遇到unicode如
阅读全文
摘要:代码随想录 LeetCode 24. 两两交换链表中的节点 carl #链表 #dummyNode #双指针 #递归 思路 借助dummyNode简化判断条件 使用双指针更清晰一些,两个指针分别指向要交换的两节点的前一位置 细节 class Solution { public: ListNode*
阅读全文
摘要:代码随想录 LeetCode 203. 移除链表元素 carl #链表 #dummyNode 思路 借助dummyNode简化判断条件 细节 dummyNode方法保持操作一致性 LeetCode 707. 设计链表 carl #链表 #dummyNode #链表索引查找 思路 使用数据成员size
阅读全文
摘要:代码随想录 LeetCode 977 有序数组的平方 carl #数组 #双指针 思路 利用有序条件,新的大值在旧数组的两端产生,因此考虑相向指针 细节 涉及3个指针,注意每个指针的更新时机 LeetCode 209 长度最小的子数组 carl #滑动窗口 #数组 #双指针 思路 求解连续变化区间的
阅读全文