09 2018 档案
摘要:2018-09-27 23:33:49 问题描述: 问题求解: 方法一、DP(MLE) 动态规划的想法应该是比较容易想到的解法了,因为非常的直观,但是本题的数据规模还是比较大的,如果直接使用动态规划,即使不MLE,也是肯定会在大规模的数据量上TLE的。 方法二、 数据量已经基本表明时间复杂度在O(n
阅读全文
摘要:2018-09-27 23:20:20 问题描述: 问题求解: 本题的难度还是有的,主要的考虑方向是尽量构造[min, max]来将后面出现的数字插入到其中。这里的求解方法是使用Stack来维护一组non-overlapping的区间,每次判断当前的数字能够加入到区间之中,如果可以,那么就直接返回t
阅读全文
摘要:2018-09-27 22:42:13 一、大整数加法 问题描述: 问题求解: 二、大整数乘法 问题描述: 问题求解:
阅读全文
摘要:2018-09-27 22:02:36 一、Basic Calculator II 问题描述: 问题求解: sign用来保存前一个符号,用num来记录数字,如果碰到一个符号或者到达结尾,则需要进行入栈操作,这个时候需要结合符号进行相应的运算。 二、Basic Calculator 问题描述: 问题求
阅读全文
摘要:2018-09-25 16:36:25 问题描述: 问题求解: 单纯遍历了一遍,emmm,果然TLE。 解题思路就是比较左边树高度和右边树高度,如果相等,那么就是一个满二叉树,返回1 << h - 1即可,如果不是,则递归的计算左右子树的个数。 时间复杂度:O(logn * logn) 2019-0
阅读全文
摘要:2018-09-24 21:52:38 一、Next Greater Element I 问题描述: 问题求解: 本题只需要将nums2中元素的下一个更大的数通过map保存下来,然后再遍历一遍nums1即可。 二、Next Greater Element II 问题描述: 问题求解: 本题和上一题应
阅读全文
摘要:2018-09-24 14:19:58 问题描述: 问题求解: 初看到这个问题,直觉上认为可以通过BFS遍历解空间进行求解,因为本质上来说,这个问题和棋盘上移动马的问题是一类问题,都是可以转化成图的问题,但是MLE了,问题出在在本问题中是不能使用used来保存已经扩展过的节点的,因为相同的节点在不同
阅读全文
摘要:2018-09-24 12:01:38 问题描述: 对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。 格式 该图包含 n 个节点,标记为 0 到 n
阅读全文
摘要:2018-09-23 19:05:20 问题描述: 问题求解: 显然的是暴力的遍历所有的区间是不可取的,因为这样的时间复杂度为n^2级别的,对于规模在50000左右的输入会TLE。 然而,最后的解答也可以看作是一个暴力求解,也就是用Set来保存以当前数为结尾的左右可能解,在下一轮中遍历上一轮的所有解
阅读全文
摘要:2018-09-23 13:25:40 主元素问题是一个非常经典的问题,一般来说,主元素问题指的是数组中元素个数大于一半的数字,显然这个问题可以通过遍历计数解决,时间复杂度为O(n),空间复杂度为O(n)。这样的算法有两个弊端,一是空间复杂度较高,二是没法处理数据流问题。 因此就有了Boyer-Mo
阅读全文
摘要:2018-09-19 22:34:28 问题描述: 问题求解: 本题是典型的最短路径的扩展题,可以使用Bellman Ford算法进行求解,需要注意的是在Bellman Ford算法的时候需要额外申请一个数组来保存变量。 int inf = (int)1e9; public int findChea
阅读全文
摘要:2018-09-15 10:23:44 一、Largest Rectangle in Histogram 在求解最大的矩形面积之前,我们先讨论一条最大直方图面积的问题。 问题描述: 问题求解: 解法一、朴素解法,O(n ^ 2)。 解决的思路就是遍历一遍,如果当前的数比后一个数要小,那么当前的额数字
阅读全文
摘要:2018-09-13 19:19:44 问题描述: 问题求解: 方法一: 使用动态规划来求解,算法时间复杂度O(n^2)。 dp[i][j] : 以(i, j)为右下角的面积最大的正方形的边长。 初始条件:最上面一行,最左边一列,可以直接得到dp值。 更新公式:matrix[i][j] == '0'
阅读全文
摘要:2018-09-11 22:58:29 一、Reverse Linked List 问题描述: 问题求解: 解法一:Iteratively,不断执行插入操作。 解法二:Recursively,不断向newHead前面加入新的节点 二、Reverse Linked List II 问题描述: 问题求解
阅读全文
摘要:2018-09-09 22:01:02 问题描述: 问题求解: 问题很Interesting,其实本质就是解空间遍历,使用BFS就可以很快的予以解决~
阅读全文
摘要:2018-09-07 09:03:14 一、Merge Intervals 问题描述: 问题求解: 二、Insert Interval 问题描述: 问题求解: 本题的问题描述中明确的说明了,本题的给出条件中的intervals是已经排序好的,并且是没有overlapping的,因此在后续的求解过程中
阅读全文
摘要:2018-09-06 16:19:17 Trie树,也被称为单词查找树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不限于字符串),所以经常被搜索引擎用于文本的词频统计。它的优点是可以最大限度的减少无谓字符的比较,查询效率比较高。 Trie的核心思想是空间换时间,利用字符串的公共前缀来降
阅读全文
摘要:2018-09-01 23:02:46 问题求解: 问题求解: 最开始的时候,一眼看过去就是一条 dp 嘛,保存每个数字结尾的长度和,最后求和就好,至于长度如何求,本题中需要用滑动窗口来维护。 很好的题目,将滑动窗口算法和动态规划巧妙的结合了起来。
阅读全文
摘要:2018-09-01 22:50:59 问题描述: 问题求解: 如果单纯的遍历判断,那么如何去重保证unique是一个很困难的事情,事实上最初我就困在了这个点上。 后来发现是一个动态规划的问题,可以将每个字符结尾的最长长度进行保存,这样就巧妙的解决的重复的问题。
阅读全文
摘要:2018-09-01 22:38:19 问题描述: 问题求解: 本题如果是第一看到,应该还是非常棘手的,基本没有什么思路。 不妨先从一种简化的版本来考虑。如果仅有一种砖块,那么,填充的方式如下。 从上面可以看出,本质上是一条动态规划问题,递推式就是Fib序列。 那么针对本问题,需要考虑的情况就复杂了
阅读全文

浙公网安备 33010602011771号