Hot

webpack概念(模块热替换HMR hot module replacement )

(???后续需要再过一遍) 模块热替换(HMR - hot module replacement)功能会在应用程序运行过程中,替换、添加或删除 模块,而无需重新加载整个页面。主要是通过以下几种方式,来显著加快开发速度: 保留在完全重新加载页面期间丢失的应用程序状态。 只更新变更内容,以节省宝贵的开发 ......
replacement 模块 概念 webpack module

[LeetCode Hot 100] LeetCode111. 二叉树的最小深度

题目描述 思路 二叉树的最小深度就是第一个叶子节点所在的层数 方法一:前序遍历(递归、dfs) /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN ......
LeetCode 深度 Hot 100 111

[LeetCode Hot 100] LeetCode110. 平衡二叉树

题目描述 思路 LeetCode104. 二叉树的最大深度 变种 方法一:后序遍历(递归、dfs) /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre ......
LeetCode Hot 100 110

[LeetCode Hot 100] LeetCode543. 二叉树的直径

题目描述 思路 所谓二叉树的直径,就是左右子树的最大深度之和。 方法一: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; ......
LeetCode 直径 Hot 100 543

[LeetCode Hot 100] LeetCode104. 二叉树的最大深度

题目描述 思路 熟练掌握二叉树的遍历算法 方法一:层序遍历(迭代)+计数 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; ......
LeetCode 深度 Hot 100 104

[LeetCode Hot 100] LeetCode102. 二叉树的层序遍历

题目描述 思路 方法一:递归 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * Tree ......
LeetCode Hot 100 102

[LeetCode Hot 100] LeetCode144. 二叉树的前序遍历

题目描述 思路 熟练掌握迭代和递归的代码。 递归代码:额外写一个函数void preOrder(TreeNode node, List res) 迭代代码:会用到数据结构——栈。先入栈当前节点的右子节点,再入栈左子节点。 方法一:递归 /** * Definition for a binary tr ......
LeetCode Hot 100 144

[LeetCode Hot 100] LeetCode94. 二叉树的中序遍历

题目描述 思路 熟练掌握迭代和递归的代码。 递归:额外写一个函数void inOrder(TreeNode node, List res) 迭代:令cur = root,一直往左子树找,找到最后一个左子节点,当cur为空,就开始处理栈顶元素(将栈顶元素加入结果集),随后将cur设置为右子节点,继续执 ......
LeetCode Hot 100 94

[LeetCode Hot 100] LeetCode145. 二叉树的后序遍历

题目描述 思路 递归:额外写一个函数void postOrder(TreeNode node, List res) 迭代: 前序遍历:根 左 右 将前序遍历改造成:根 右 左 然后反转根右左为:左 右 根,即为后序遍历 优化一下: while (!stack.isEmpty()) { TreeNod ......
LeetCode Hot 100 145

Quake recovery starts with a bowl of hot beef noodles 地震恢复从一碗热牛肉面开始

In freezing temperatures, a simple bowl of beef noodles brings hope to thousands of residents who lost their homes in the magnitude-6.2 earthquake in ......
牛肉面 牛肉 地震 recovery noodles

[LeetCode Hot 100] LeetCode394. 字符串解码

题目描述 思路 思路: 碰到数字:压入数字栈,注意多位数的情况 碰到字母:直接拼接到res 遇到[:将num和res分别压入栈 遇到]:开始处理栈顶元素 方法一: class Solution { public String decodeString(String s) { int num = 0; ......
LeetCode 字符串 字符 Hot 100

[LeetCode Hot 100] LeetCode739. 每日温度

题目描述 思路:单调递减栈 使用单调栈的模板即可。 根据题意可知,该题使用的是单调递减栈。 问题抽象为:找出数组中右边第一个比我大的元素。 方法一: class Solution { public int[] dailyTemperatures(int[] temperatures) { // 用于 ......
LeetCode 温度 Hot 100 739

[LeetCode Hot 100] LeetCode42. 接雨水

题目描述 思路一:单调栈 柱子的高度递减的时候是装不了水的,当碰到第一个比之前高的柱子才可以装水。 此时计算栈顶索引能装的水: 宽:i - left - 1(这个left为栈顶元素pop之后的peek值) 高:min(height[left], height[i]) - height[top] 该题 ......
LeetCode 雨水 Hot 100 42

[LeetCode Hot 100] LeetCode84. 柱状图中最大的矩形

题目描述 思路:枚举+优化(单调栈) 先固定矩阵的高。 然后向左向右找到第一个比当前元素值小的元素,确定好左右边界。 对于元素2来说: 向左找到第一个比当前元素值小的元素:1的右边界 向右找到第一个比当前元素值小的元素:3的右边界 枚举每个元素的上边界,确定往左数最远到达哪个边界(即寻找左边第一个比 ......
LeetCode 矩形 Hot 100 84

[LeetCode Hot 100] LeetCode74. 搜索二维矩阵

题目描述 思路:二维矩阵坐标变换 + 二分查找 二维矩阵坐标变换: 只要知道二维数组的的行数m和列数n,二维数组的坐标 (i, j) 可以映射成一维的index = i * n + j;反过来也可以通过一维index反解出二维坐标 i = index / n,j = index % n。(n是列数) ......
LeetCode 矩阵 Hot 100 74

[LeetCode Hot 100] LeetCode153. 寻找旋转排序数组中的最小值

题目描述 思路 如果数组翻转后又回到升序的情况,即nums[left] <= nums[right],则nums[left]就是最小值,直接返回。 如果数组翻转,需要找到数组中第二部分的第一个元素: 若 nums[left] <= nums[mid],说明区间 [left,mid] 连续递增,则最小 ......
LeetCode 数组 Hot 100 153

[LeetCode Hot 100] LeetCode35. 搜索插入位置

题目描述 思路 基础二分搜索模板 本质:找到第一个大于等于target的元素的下标 注意: 该题目不存在重复元素 存在一种特殊情况:target > nums的最大值,此时插入的位置正好是left的位置 方法一: class Solution { public int searchInsert(in ......
LeetCode 位置 Hot 100 35

[LeetCode Hot 100] LeetCode33. 搜索旋转排序数组

题目描述 思路 如果nums[left] <= nums[mid],则[left, mid]有序 如果nums[left] > nums[mid],则[mid,right]有序 方法一: class Solution { public int search(int[] nums, int targe ......
LeetCode 数组 Hot 100 33

[LeetCode Hot 100] LeetCode34.在排序数组中查找元素的第一个和最后一个位置

题目描述 思路: 二分查找之寻找左右侧边界 两个关键点:1. 数组有序;2. 时间复杂度O(log n) 方法一: class Solution { public int[] searchRange(int[] nums, int target) { if (nums.length == 0 || ......
LeetCode 数组 元素 位置 Hot

[LeetCode Hot 100] LeetCode25. K个一组翻转链表

题目描述 思路: 判断链表中是否足够k个元素 再将这k个元素内部翻转一下 将前后端点连接的指针变化一下 方法一: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next ......
LeetCode Hot 100 25

[LeetCode Hot 100] LeetCode148. 排序链表

题目描述 思路一:堆排序、小顶堆 定义一个最小堆 将链表的所有节点放入一个最小堆中 直接用队列弹出的最小值依次覆盖掉原链表的值 方法一: /** * Definition for singly-linked list. * public class ListNode { * int val; * L ......
LeetCode Hot 100 148

[LeetCode Hot 100] LeetCode138. 随机链表的复制

题目描述 思路一:添加"小弟" 根据遍历到的原节点创建对应的新节点,每个新创建的节点是在原节点后面。 原节点i的随机指针(如果有的话),指向的是原节点j,那么新节点i的随机指针,指向的是原节点j的next 最后将两个链表分开,再返回新链表就可以 思路二:使用哈希表 首先创建一个哈希表,再遍历原链表, ......
LeetCode Hot 100 138

[LeetCode Hot 100] LeetCode24. 两两交换链表中的节点

题目描述 思路: 创建dummy节点,令dummy.next = head。令cur表示当前到达的节点,初始时cur = dummy。每次需要交换cur后面的两个节点。 如果cur的后面没有节点或者只有一个节点,则没有更多的节点需要交换,因此结束交换。否则,获得cur后面的两个节点node1和nod ......
LeetCode 节点 Hot 100 24

[LeetCode Hot 100] LeetCode155. 最小栈

题目描述 思路一:使用辅助栈 定义一个[数据栈]来支持push、pop、top操作 定义一个[辅助栈],其栈顶为当前的最小值,以支持常数时间复杂度的getMin操作 思路二:使用ArrayDeque 栈元素中除了保存当前值之外,额外保存当前最小值 使用静态内部类 方法一:对应思路一 class Mi ......
LeetCode Hot 100 155

[LeetCode Hot 100] LeetCode20. 有效的括号

题目描述 思路: 栈的经典应用。 注意下遇到右括号的代码,即边界情况: // 遇到右括号,则进行括号匹配 if (!stack.isEmpty() && stack.peek() == match(c)) { // 如果匹配则直接弹出栈顶元素 stack.pop(); } else { // 如果不 ......
LeetCode 括号 Hot 100 20

[LeetCode Hot 100] LeetCode295. 数据流的中位数

题目描述 思路:一个大根堆+一个小根堆+保持数量 一个大根堆用来记录数轴左边的数值 一个小根堆用来记录数轴右边的数值 大根堆的容量要么等于小根堆的容量(此时是偶数个有序整数列表),要么大根堆的容量比小根堆的容量大1(此时是奇数个有序整数列表) 如果数量不符合上述条件,则将超过容量的那个堆的堆顶元素插 ......
LeetCode 中位数 数据流 数据 Hot

[LeetCode Hot 100] LeetCode215. 数组中的第K个最大元素

题目描述 思路:小顶堆 维护一个大小为K的小顶堆 遍历所有元素: 如果当前堆中元素个数小于K,则将元素添加到堆中 如果当前堆中元素个数等于K,则判断第K + 1 方法一: class Solution { public int findKthLargest(int[] nums, int k) { ......
LeetCode 数组 元素 Hot 100

[LeetCode Hot 100] LeetCode347. 前K个高频元素

题目描述 思路:小顶堆 首先遍历整个数组,并是用哈希表记录每个数字出现的次数,并形成一个"出现次数数组"。 找出原数组的前k个高频元素,就相当于找出"出现次数数组"的前K大的值。 建立一个小顶堆,然后遍历"出现次数数组" 如果堆的元素个数小于k,就可以直接插入堆中。 如果堆的元素个数等于k,则检查堆 ......
LeetCode 元素 Hot 100 347

[LeetCode Hot 100] LeetCode2. 两数相加

题目描述 思路:模拟 每次3个数相加:l1链表的值 + l2链表的值 + 进位 如果 l1链表不为空 或者 l2链表不为空 或者 进位不为0 我们就执行循环 那么和存储的是 t % 10 进位就是t / 10 因为题目需要创造一条链表,所以我们创建一个dummy结点的话会方便一点。 方法一: /** ......
LeetCode LeetCode2 Hot 100

[LeetCode Hot 100] LeetCode86. 分隔链表

题目描述 思路 可以将链表分成两个小链表,一个链表中的元素大小都小于x,另一个链表中的元素都大于等于x,然后再把这两条链表连接到一起,就得到题目想要的结果。 这个题类似于合并两个有序链表:只不过另一个链表只有唯一一个节点x。 合并这两个链表。 方法一: /** * Definition for si ......
LeetCode Hot 100 86