自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 数组的最长连续的序列

问题:给一个包含数字的数组,求该数组的最长的子数组(这里说的子数组是下标连续),要求这个子数组中的数组是一个连续的序列(不需要排好序)。例如,给一个数组[4; 5; 1; 5; 7; 6; 8; 4; 1],最长的满足条件的子数组是[5; 7; 6; 8; 4]。因为该子数组中,5; 7; 6; 8; 4是一个连续的序列。思路:可以使用动态规划,满足条件的子序列,首先子序列中不能有重复出现

2013-09-05 12:26:02 785

原创 KMP字符串匹配

今天终于弄明白了如何计算KMP匹配算法中的next数组。KMP匹配中的next数组的第i个元素j=next[i],表示模式串pattern中的前i个字符pattern[0..i-1]中,真前缀pattern[0..j-1]和真后缀pattern[i-j-2...i-1]相等,这样再进行模式匹配时,如果主串中当前字符和pattern中第i个字符匹配时unmatch,此时,不用回溯主串的指针,而是

2013-09-04 19:25:27 687

原创 卡特兰数--前序遍历对应的二叉树/进栈顺序对应的出栈顺序

Given preorder of a binary tree, print out all the binary trees分析:根据前序遍历得到对应所有二叉树的中序遍历,类似于给出一个进栈顺序,输出所有的出栈顺序。可以使用一个vector来模拟进出栈,使用另一个vector来保存所有已出栈的序列。总共的二叉树数目是卡特兰数1/(n+1)C(n)(2n)对于第i个进栈元素,当前栈中有k个

2013-09-04 10:50:35 3651

原创 Sort a K sorted array

Question:given an array of n unsorted integers and each number is at most k positions away from its final sorted position, give an e-cient sorting algorithm. For example, let us consider k is 2, an

2013-09-03 16:38:25 918

原创 求和为某个值得全部序列

问题:Write a function that takes an array of five integers, each of which is between 1 and 10, and returns the number of combination of those integers that sum to 15. For example, calling the function

2013-09-02 18:51:31 667

原创 Phone Number Divide

You are given a String number containing the digits of a phone number (the number of digits, n, can be any positive integer) . To help you memorize the number, you want to divide it into groups of con

2013-09-02 18:11:43 1330

原创 窗口滑动

Given a sequence of data (it may have duplicates), a fixed-sized moving window, move thewindow at each iteration from the start of the data sequence, such that(1) the oldest data element is remove

2013-09-02 16:29:53 596

原创 数组调整

1、一个整数数组存在若干的正数、负数和零,如何调整使负数排在零的前边,零排在负数的前边。很容易想到使用快速排序的Partition方法,选择0作为基准,先将非负数调整到左边,正数调整到右边,然后对于非负数在进行一次调整。void ArrayArrange(int* pData, int len){ assert(pData!=NULL); int positiveIndex = 0;

2013-08-31 17:13:51 890

原创 非递归遍历二叉树

使用栈辅助实现二叉树的非递归前序、中序和后序遍历前序遍历:遍历顺序:根->左子树->右子树分析:先访问根,右子树入栈,然后访问左子树void PreOrderNoRecursion(BinaryNode* bt){ stack s; BinaryNode* p = bt; while (p!=NULL || !s.empty()){ if (p==NULL){

2013-08-30 11:30:52 425

原创 字符串编辑距离

两个字符串的编辑距离又称为Levenshtein距离,指第一个字符串经过插入、删除、替换字符操作之后变成第二个字符串所要进行的操作的最少步骤数。一般使用动态规划DP来实现。d[i][j]表示长度为i的子串S1[0..i-1]与长度为j的子串S2[0..j-1]之间的编辑距离,则d[0][j]=j;(S1子串执行j次插入操作与S2子串相同)d[i][0]=i;(S1子串执行i次删除操作与

2013-08-29 15:58:42 579

原创 RollingHash求字符串匹配

字符串匹配与查找和两个字符串共同子串问题的计算时,有时会想到将字符串中字符看整数,计算一个子串的hash值,以字符串匹配为例,模式串P(长度为L),待匹配串S(长度为n):1)计算P字符串的Hash值,时间复杂度O(L)2)对于字符串S,计算S的长度为L的子串的Hash值,每个Hash值计算用时O(L),时间复杂度O(nL)3)对于S的每个子串的Hash值与P字符串Hash值进行比较,

2013-08-28 18:38:32 2309

原创 正确匹配的最长的括号子串

题目:有个由’(’和’)’组成的字符串,求出其中最长的正确匹配子串,如((()()中是()()分析:使用字符串进出栈来模拟括号的匹配,栈中保存没有进行匹配的字符串,扫描字符串,对于第i个字符,如果该字符为‘(’,则进栈,如果该字符为')',并且栈顶字符是‘(’,则进行匹配,否则不匹配,字符进栈。对于进行匹配的字符,判断以该右括号结尾的最大匹配子串(最大匹配子串即为该右括号向前到第一个未匹配字符

2013-08-28 14:25:12 2497

原创 输出所有括号组合

题目:有n个括号,输出所有正确的括号组合括号组合个数:根据卡特兰数原理,总共的括号组合数是C(2n)(n)/(n+1)分析:可以模拟左右括号进出栈的情况计算所有正确的括号组合,如果有剩余的左括号,在任何时刻都可以进栈,栈中有未匹配的左括号时(进栈的左括号数大于右括号数),右括号可以进栈。当所有括号都进栈时,便可得到一个括号组合。 static int pairCount = 0;//b

2013-08-28 12:52:45 2587

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除