摘要: 真不容易。不靠debug写出来的。纸上分析的时候,写下i和j为两行,然后一个一个的写下改变的值,这样可以找到bug。 #include <cstring> #include <malloc.h> using namespace std; class Solution { public: char * 阅读全文
posted @ 2013-07-31 23:43 阿牧遥 阅读(200) 评论(0) 推荐(0)
摘要: 整体来看,KMP算法,在s中寻找p(p,pattern,s可能的子串)采用的思想是:1.预处理p,生成next数组;2.遍历中s的index不回溯,不匹配时下一个字符匹配p的next[j]字符,问题的复杂度由O(mn)下降到O(m+n)。;3.next数组有自动状态机的思想在里面;4.next数组其实是前缀数组的最前面和最后面共同的字符数。next数组有从-1开始的,有从0开始的。算法导论从0开始,但数组下标从1开始。我们采取从-1开始的,这样j=next[j]好写。以"ABCDABD"为例,- "A"的前缀和后缀都为空集,共有元素的长度为0;- &qu 阅读全文
posted @ 2013-07-31 21:20 阿牧遥 阅读(309) 评论(0) 推荐(0)
摘要: https://codility.com/demo/take-sample-test/delta2011/0-1背包问题的应用。我自己一开始没想出来。“首先对数组做处理,负数转换成对应正数,零去掉,计数排序统计有多少个不同元素及其对应个数,并累加所有数的和sum,不妨记b=sum/2,不同元素个数为m,则目标转换为在m个不同元素中挑出若干个元素(每个元素可以重复多次,但少于它们的出现次数),使得它们的和不大于b并尽量接近。到了这里,应该有点熟悉的感觉了吧。对了,其实这就是0-1背包问题!” 参考http://phiphy618.blogspot.jp/2013/05/codility-delt 阅读全文
posted @ 2013-07-31 20:14 阿牧遥 阅读(1557) 评论(0) 推荐(0)
摘要: 简单题。 public class Solution { public int removeDuplicates(int[] A) { // Start typing your Java solution below // DO NOT write main() function if (A.len 阅读全文
posted @ 2013-07-31 12:21 阿牧遥 阅读(165) 评论(0) 推荐(0)