摘要:
原题地址以前可以用DP枚举所有回文串,但是Leetcode后来增加了几组大数据,用DP会超时。什么!用DP都超时了??那怎么办?答:二分法尝试可能的回文串长度,直到找到最大值需要注意的是,假设现在已经验证了长度为length的回文串不存在,传统的二分法就会去尝试长度为length/2的回文串是否存在... 阅读全文
posted @ 2015-01-24 19:40
李舜阳
阅读(204)
评论(0)
推荐(0)
摘要:
原题地址1. 把所有与边界联通的"O"替换成别的字符,比如"#"2. 把剩下的所有"O"替换成"X"3. 把所有与边界联通的"#"替换成"X"代码: 1 void replace(vector > &board, int i, int j, char before, char after) { 2 ... 阅读全文
posted @ 2015-01-24 17:42
李舜阳
阅读(195)
评论(0)
推荐(0)
摘要:
原题地址非常有技巧性的一道题,虽然本质上仍然是搜索+回溯,但关键是如何处理模式串里的多余的*,如果处理的不好就超时了。基本的搜索+回溯算法是这样的,对于原串s和模式串p,依次遍历其字符:(a) 如果p[j]="*",依次将p[j+1..p.length]和s[i..s.length]、s[i+1..... 阅读全文
posted @ 2015-01-24 16:19
李舜阳
阅读(1604)
评论(0)
推荐(0)
摘要:
原题地址非常有技巧的一道题,如果没有接触过类似题目或没有任何提示的情况下想出来很困难,因为题目要求O(1)的空间复杂度既然是O(1)的空间复杂度,自然要用到原数组了。解法是:1. 遍历每个数组元素,把元素都交换到正确的位置上。比如发现A[3] = 5,则交换A[5]和A[3],让A[5]=5。2. ... 阅读全文
posted @ 2015-01-24 15:36
李舜阳
阅读(168)
评论(0)
推荐(0)
摘要:
原题地址不妨手动模拟一下,观察是否有规律可寻。假设从位置0开始,我们有一个矩形条向右扩展,我们遇到了第二个矩形条,假设这个矩形条比第一个矮:我们继续向右扩展,直到遇到比第一个矩形条高(或者相等)的矩形条:那么显然,蓝色的部分就是装水的部分,把这部分累加到最终的结果中然后,以新发现的这个矩形条为左边界... 阅读全文
posted @ 2015-01-24 15:00
李舜阳
阅读(341)
评论(0)
推荐(0)
摘要:
原题地址字典序模拟问题,枚举num的所有字典序。假设已知序列seq,求下一个字典序序列:1. 从序列seq右侧向左寻找第一个顺序对,即对于位置i,有seq[i] seq[i]。肯定能找到这样一个j,因为j至少可以是i+13. 交换seq[i]和seq[j]4. 将seq在位置i之后的部分倒置,即将... 阅读全文
posted @ 2015-01-24 14:01
李舜阳
阅读(379)
评论(0)
推荐(0)
摘要:
原题地址跟N-Queens几乎没差别,好像还更简单了呢代码: 1 int solve(int row, vector &col, vector left, vector right) { 2 if (row == 0) 3 return 1; 4 5 vector avail(co... 阅读全文
posted @ 2015-01-24 02:10
李舜阳
阅读(168)
评论(0)
推荐(0)

浙公网安备 33010602011771号