随笔分类 - leetcode整理
整理刷过的leetcode题目
摘要:二叉树遍历用递归的方式比较简单,但是迭代还是稍微有点绕,记录一下二叉树迭代遍历的统一框架,以防忘记: 主要的思路依旧是栈解决,但是为了当前栈顶元素是否需要被加入到result list中,巧妙地在需要被加入到result list中的元素之前加上一个null以示区分。 102. 二叉树的层序遍历 -
阅读全文
摘要:总结一下leetcode中遇见的2-sum, 3-sum, 4-sum问题,并扩展到n-sum。 1. 两数之和 - 力扣(LeetCode) 梦开始的地方,不多说。 class Solution { public int[] twoSum(int[] nums, int target) { Map
阅读全文
摘要:总结一下leetcode中遇见的异位词问题: 242. 有效的字母异位词 - 力扣(LeetCode) 本题是异位词题目中最基础的,有两种方法可以轻松解决: 1. 排序法,时间复杂度O(n log n): class Solution { //排序解决 public boolean isAnagra
阅读全文
摘要:1. 前缀和数组: 前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。(仅仅适用于原数组不变的情况,如果原数组经常修改,则需要考虑差分数组。) 模版如下: class PrefixSum { // 前缀和数组 private int[] preSum; /* 输入一个数组,构造前缀和 */
阅读全文
摘要:此文总结一下常见图论算法,代码可以为后续遇见类似题目提供参考: 1. 图的表示: 邻接矩阵:可通过创建数组得到 邻接表:我个人喜欢通过LinkedList<int[]>[] graph = new LinkedList[n];得到。 Edge List:同样可以通过LinkedList<int[]>
阅读全文
摘要:滑动窗口是我在刷题时感觉比较困难的部分,简单做一个总结,防止之后又忘了: 一般模板如下: // 注意:java 代码由 chatGPT🤖 根据我的 cpp 代码翻译,旨在帮助不同背景的读者理解算法逻辑。 // 本代码还未经过力扣测试,仅供参考,如有疑惑,可以参照我写的 cpp 代码对比查看。 /*
阅读全文