84.柱状图中最大的矩形 发表于 2020-09-29 | 分类于 算法 字数统计: 702 | 阅读时长 ≈ 3 题目描述 题解单调栈这道题的暴力解法就是, 遍历每个柱子, 然后从该柱子开始往两边扩散, 直到找出最近的比它小的柱子. 那么该柱子能获得的最大面积就是 1square = height[i] * (right - left - 1); 例如实例图中的高度为5的柱子, 左边第一个比它小的柱子下标为1 ... 阅读全文 »
74.搜索二维矩阵 发表于 2020-09-28 | 分类于 算法 字数统计: 178 | 阅读时长 ≈ 1 题目描述 题解二分查找先对第一列进行二分查找, 确定出目标值在哪一行, 然后在该行进行查找. 1234567891011121314151617181920212223242526272829303132333435363738public boolean searchMatrix(int[][] ... 阅读全文 »
116.填充每个节点的下一个右侧节点指针 发表于 2020-09-28 | 分类于 算法 字数统计: 205 | 阅读时长 ≈ 1 题目描述 题解DFS直观地分析, 对于每个节点root, 需要将其左节点的next指向其右节点即可. 但是这道题的关键在右节点的指向. 对于图中的节点5, 他是2的右儿子, 它指向的是3 的左儿子, 而3是2的next节点. 所以指代关系就出来了. 1root.left.next = roo ... 阅读全文 »
117.填充每个节点的下一个右侧节点指针Ⅱ 发表于 2020-09-28 | 分类于 算法 字数统计: 156 | 阅读时长 ≈ 1 题目描述 题解BFS这道题跟上一道的区别在于不是完美二叉树, 更具有普遍性. 如果不是完美二叉树那么每个节点的next节点就没有强规律性, 比较好的方法是通过BFS做 12345678910111213141516171819202122232425262728293031public Node ... 阅读全文 »
105.从中序与前序遍历序列构造二叉树 发表于 2020-09-25 | 分类于 算法 字数统计: 159 | 阅读时长 ≈ 1 题目描述 题解递归这道题方法与106题一模一样, 只是遍历的顺序有所变化而已, 具体查看106题解 12345678910111213141516171819202122232425262728293031public class lc105 { int[] preorder; ... 阅读全文 »
106.从中序与后序遍历序列构造二叉树 发表于 2020-09-25 | 分类于 算法 字数统计: 323 | 阅读时长 ≈ 1 题目描述 题解递归这道题要明白中序和后序遍历的顺序和相关特点. 对于后续遍历来说, 最后一个元素一定是根节点的数值, 在中序遍历的结果中找出该值, 那么这个位置之前的数组就是左子树的遍历结果, 这个位置之后的数组就是右子树的遍历结果. 那么根据这个数量关系就可以进行递归操作: 拿到一个后序遍历的 ... 阅读全文 »
69.x的平方根 发表于 2020-09-24 | 分类于 算法 字数统计: 109 | 阅读时长 ≈ 1 题目描述 题解二分查找这道题可以利用二分法做, 找到平方不超过目标值的最大数字 1234567891011121314public int mySqrt(int x) { long left = 0; long right = x/2+1; while (left < ... 阅读全文 »
501.二叉搜索树中的众数 发表于 2020-09-24 | 分类于 算法 字数统计: 413 | 阅读时长 ≈ 2 题目描述 题解哈希表直观上能想到的方法就是遍历整个BST, 然后用哈希表记录每个值出现的次数. 然后在遍历哈希表, 将出现次数最多的数放进数组中返回即可 123456789101112131415161718192021222324252627282930313233343536class Sol ... 阅读全文 »
52.N皇后Ⅱ 发表于 2020-09-23 | 分类于 算法 字数统计: 205 | 阅读时长 ≈ 1 题目描述 题解回溯算法这道题做法与上道题一模一样, 甚至更简单些, 只需要求出不同解决方案的数量即可. 免去了数组转为字符串的过程 1234567891011121314151617181920212223242526272829303132333435class Solution { ... 阅读全文 »
51.N皇后 发表于 2020-09-23 | 分类于 算法 字数统计: 356 | 阅读时长 ≈ 1 题目描述 题解回溯算法 思路就是DFS加剪枝, 碰到不符合要求的行就回退. 比较麻烦的是设置已利用的路径. 如果采用了某一个位置, 那么该行该列该斜方向的位置都不能再放置 一开始打算用一个boolean[n][n]矩阵来表示已经使用过的位置, 但是需要循环将整行的位置改为true, 所以用三个向量 ... 阅读全文 »