Maximal Rectangle

2018-01-14
阅读 2 分钟
1.8k
Largest Rectangle in Histogram的变形。可以这么转换,二维的矩形的横轴对应Histogram的长度,纵轴对应Histogram的高度。从左到右,从上到下遍历一次即可。假设矩阵大小为n * n,时间复杂度为O(n^2),空间复杂度为O(n)。

Largest Rectangle in Histogram

2018-01-09
阅读 2 分钟
1.5k
即寻找序列S中最大的连续子序列矩形面积。连续子序列s的矩形面积定义:min{s[i]|0<i<=len(s)} * len(s)。如:S=[2,1,5,6,2,3],最大的连续子序列矩形面积为10,此连续子序列s=[5,6]。

算法概论 第八章第八题

2018-01-02
阅读 1 分钟
1.4k
In the EXACT 4SAT problem, the input is a set of clauses, each of which is adisjunction of exactly four literals, and such that each variable occurs at mostonce in each clause. The goal is to find a satisfying assignment, if one exists.Prove that EXACT 4SAT is NP-complete.

Minimum Window Substring

2017-12-20
阅读 2 分钟
1.6k
即寻找字符串S的最短子字符串s,使得s包含字符串T中的所有元素。如:S="ADOBECODEBANC",T="ABC",满足条件的最短子字符串s="BANC"。

Edit Distance

2017-12-16
阅读 2 分钟
1.3k
Edit Distance 题解 题目描述 即寻找两个字符串之间的编辑距离。编辑距离定义: 编辑距离是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。 如:kitten和sitting的最小编辑距离是3。 kitten → sitten(k→s) sitten → sittin(e→i) sittin → sitti...

Text Justification

2017-12-09
阅读 2 分钟
1.8k
即文本对齐:填充单词之间空格使得占满一行(除了最后一行左对齐)。如:words: ["This", "is", "an", "example", "of", "text", "justification."],L: 16.对齐后:

Valid Number

2017-12-03
阅读 2 分钟
1.9k
Valid Number 题解 题目描述 即判断某个字符串是否合法的数字表达式。如: 2e10,合法。 75.0.,非法。 0e,非法。 0.1 ,合法。 题解 基于规则与状态判断。可利用二维数组模拟状态转移图,又或是利用变量记录状态。时间复杂度为O(N),空间复杂度为O(1)。 代码 {代码...} 总结 主要应用了有限状态机的思想。

Insert Interval

2017-11-26
阅读 2 分钟
1.4k
即向有序、不重叠的区间序列中插入一个区间。如区间产生重叠,则合并。求插入新区间后的区间序列。如:A = [1,3],[6,9],插入[2,6],插入后新序列为[1,9]。

Jump Game II

2017-11-17
阅读 1 分钟
1.5k
即计算从起始位置到达目的位置的最短路径长度。某点可达的下一点应在以此点为半径,此点的可达路长为半径的范围内。还有一个限制,所有点在同一直线上。某点的可达路长存储在数组中,数组第一个元素存储起始位置的信息,最后一个元素存储目的位置的信息。如:A = [2,3,1,1,4],一个最短路径为{A0}->{A1}->{A4},即...

Wildcard Matching

2017-11-12
阅读 2 分钟
1.5k
即判断字符串与正则表达式(只支持'?'和'*')是否匹配。'?'匹配任意一个字符,'*'匹配任意一个序列。如:"abab"与"*??ab"返回true。

Trapping Rain Water

2017-11-03
阅读 2 分钟
1k
即现实中的地面积水问题。抽象出来即从某个序列Seq中提取出先单调递减后单调递增的子序列集合(集合中子序列只允许头尾存在重复),求此集合中所有子序列s(长为d)的"凹陷值"((d - 2) * min{s[0],s[d-1]} - (sum(s) - s[0] - s[d-1]))之和。如:[0,1,0,2,1,0,1,3,2,1,2,1],积水量为6。

First Missing Positive

2017-10-27
阅读 1 分钟
1.2k
可以利用数组索引来记录数组出现的正数,即将数组索引号对应正数。具体下来就是将数组array中的x(1<=x<=n)存储到array[x-1]中。最后从0开始遍历数组,第一次出现array[i] != i+1,则数组中没有i这个正整数,也就是数组中第一个缺失的正整数。将x(1<=x<=n)存储到array[x]中也是只需遍历一次数组,所以时间复...

Sudoku Solver

2017-10-19
阅读 7 分钟
1.9k
数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。1

Longest Valid Parentheses

2017-10-13
阅读 2 分钟
1.4k
即从只含有'('和')'的字符串s中找出最长有效子串sub(s),返回该子串的长度len。如:s=")()())"",sub(s)="()()";len=4。

Substring with Concatenation of All Words

2017-10-07
阅读 2 分钟
1.4k
即从字符串s中找出某个子串,此子串是长度一致的子串集合words的某种全排列,返回这些子串的开始位置。如:s:"barfoofoobarthefoobarman",words:["bar","foo","the"];结果为[6,9,12]。

Merge k Sorted Lists

2017-10-07
阅读 2 分钟
1.1k
假设K个有序数组,共有N个元素。第一种思路:依次比较各链表的最小值,取其中最小并入新链表中。如此反复N次即可得到结果。时间复杂度为O(K*N),空间复杂度为O(1)。第二种思路:最小堆。取各链表的最小值时维持一个大小为K的最小堆,每次取出堆中最小值并入新链表,并插入最小值所在链表的下一个元素。时间复杂度为O(N*l...

Regular Expression Matching

2017-09-29
阅读 2 分钟
2.1k
因为元字符‘*’可以匹配的数量不定,最长匹配或最短匹配都无法适应,所以只能通过一个容器记录转移状态。类似于状态转移图,所以简单两层循环即可。外循环遍历字符串,内循环寻找匹配的下一个状态。当最终完成遍历且最后状态中有两字符串最后匹配状态即匹配成功,反之失败。

Count of Smaller Numbers After Self

2017-09-22
阅读 2 分钟
1.6k
可以遍历元素右边的元素,进行比较并记录小于其的元素个数。时间复杂度为线性。若想降低复杂度,可通过二分查找思想降低到O(log n)。因为会随机插入,所以采取二叉搜索树进行记录。

Median of Two Sorted Arrays

2017-09-14
阅读 2 分钟
1.5k
有序数组A的大小为n,则中位数median满足$$median = A[n / 2](n = 2k + 1)(公式1)$$$$median = (A[(n - 1) / 2] + A[n / 2]) / 2 (n = 2k)(公式2)$$观察可得出一个统一分支的情况,即将数组复制合并。A=A+A。如A=[1,2,3],那么复制加倍后得到A为[1,1,2,2,3,3]。则数组A的大小永远为偶数,则应用(公式2)即可。

Reverse Nodes in k-Group

2017-09-07
阅读 2 分钟
1.5k
即长为n的列表中,以k(0 < k < n)个元素为一组进行反转,余下不变。如: 1->2->3->4->5k = 2: 2->1->4->3->5k = 3: 3->2->1->4->5