随笔分类 -  算法设计

摘要:归并排序的实现.时间复杂度是O(nlgn),空间复杂度是O(n) + O(lgn). 1 #include 2 3 using namespace std; 4 5 void merge_array(int *, int, int, int); 6 void merge_sort(int *,... 阅读全文
posted @ 2014-12-02 14:54 yyxayz 阅读(164) 评论(0) 推荐(0) 编辑
摘要:直接选择排序:直接选择排序的作法是:第一趟扫描所有数据,选择其中最小的一个与第一个数据互换;第二趟从第二个数据开始向后扫描,选择最小的与第二个数据互换;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。那 是不是稳定的呢,我们可以观察一次扫描中,要交换最小的一个与第一个数据,最小的这个我... 阅读全文
posted @ 2014-12-02 10:30 yyxayz 阅读(330) 评论(0) 推荐(0) 编辑
摘要:题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数... 阅读全文
posted @ 2014-11-29 22:43 yyxayz 阅读(197) 评论(0) 推荐(0) 编辑
摘要:方法一:递归 1 void printNLevel(TreeNode *root, int n) 2 { 3 if (root == NULL) 4 { 5 return ; 6 } 7 8 if (n == 1) 9 {10 ... 阅读全文
posted @ 2014-11-24 15:23 yyxayz 阅读(202) 评论(0) 推荐(0) 编辑
摘要:二叉树的层次遍历,也就是广度优先遍历。代码如下: 1 void HierarchyBiTree(BiTree *Root) 2 { 3 LinkQueue *Q; 4 5 InitQueue(Q); 6 7 if (Root == NULL) return ; 8 ... 阅读全文
posted @ 2014-11-24 15:11 yyxayz 阅读(158) 评论(0) 推荐(0) 编辑
摘要:搜索是ACM竞赛中的常见算法,本文的主要内容就是分析它的特点,以及在实际问题中如何合理的选择搜索方法,提高效率。文章的第一部分首先分析了各种基本的搜索及其各自的特点。第二部分在基本搜索方法的基础上提出一些更高级的搜索,提高搜索的效率。第三部分将搜索和动态规划结合,高效地解决实际问题,体现搜索的广泛应... 阅读全文
posted @ 2014-11-20 21:10 yyxayz 阅读(619) 评论(0) 推荐(0) 编辑
摘要:对于求区间最大最小值,我们自然而然就想到了一个O(n)时间复杂度的算法,但是如果询问有很多呢?这样必然超时。当然我们可以用线段树来解,使得每一次查询的时间降到log(n),但是对于RMQ算法,只要我们做了些预处理,之后的查询我们仅需要O(1)的时间。Sparse_Table算法是解决RMQ问题的一类... 阅读全文
posted @ 2014-11-19 22:35 yyxayz 阅读(3952) 评论(0) 推荐(0) 编辑
摘要:一、钢条切割二、矩阵链乘法三、最优三角剖分四、连续子数组之和五、单词分割总结:写递归方程的时候,往往不直接是所要求的最优解,所需最优解可能还需要根据递归方程解出来的结果,再次计算。例如,连续子数组之和,它并不是直接求解子数组之和最大,并不是直接根据它来列出递归方程。 阅读全文
posted @ 2014-11-06 19:22 yyxayz 阅读(156) 评论(0) 推荐(0) 编辑
摘要:适合应用动态规划方法求解的最优化问题应该具备的两个要素:1、最优子结构最优子结构性质:如果一个问题的最优解包含其子问题的最优解,就称该问题具有最优子结构性质。使用动态规划方法时,我们用子问题的最优解来构造原问题的最优解。因此,我们必须小心确保考察了最优解中用到的所有子问题。在发掘最优子结构性质的过程... 阅读全文
posted @ 2014-11-03 17:08 yyxayz 阅读(654) 评论(0) 推荐(0) 编辑
摘要:题目:给定一个整型数组,其中有两个数字只出现一次,其余的数字都出现两次,找出这两个只出现一次的数字.时间复杂度为O(n),空间复杂度为O(1).异或运算的特性:相等的两个整数异或的结果为0;一个整数与0进行异或运算的结果为其本身.基本思想:将这两个只出现一次的数字分到两个数组中,这样就很容易找到只出... 阅读全文
posted @ 2014-11-01 17:49 yyxayz 阅读(1038) 评论(0) 推荐(0) 编辑
摘要:自动机,KMP算法,Extend-KMP,后缀树,后缀数组,trie树,trie图及其应用 涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机,KMP算法,Extend-KMP,后缀树,后缀数组,trie树,trie图及其应用。 当然这些都是比较高级的数据结构和算法,而这里面最常用和最熟悉的大... 阅读全文
posted @ 2014-10-31 21:44 yyxayz 阅读(216) 评论(0) 推荐(0) 编辑
摘要:特性Trie树属于树形结构,又称字典树、前缀树。查询效率比红黑树和哈希表都要快。假设有这么一种应用场景:有若干个英文单词,需要快速查找某个单词是否存在于字典中。使 用Trie时先从根节点开始查找,直至匹配到给出字符串的最后一个节点。在建立字典树结构时,预先把带有相同前缀的单词合并在同一节点,直至两个... 阅读全文
posted @ 2014-10-31 15:29 yyxayz 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目:输入一个二叉树的跟节点,判断该树是不是平衡二叉树.给出两种解法. 阅读全文
posted @ 2014-10-31 10:03 yyxayz 阅读(215) 评论(0) 推荐(0) 编辑
摘要:题目:统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于在这个数组中出现了4次,因此输出4.使用二分查找,基本思想:先查找该数字第一次出现的位置,然后查找该数字最后一次出现的位置.代码如下: 1 #include 2 #include 3... 阅读全文
posted @ 2014-10-31 09:56 yyxayz 阅读(179) 评论(0) 推荐(0) 编辑
摘要:递归的二分查找: 1 int search(int *a, int target, int p, int r) 2 { 3 if (p target)11 return search(a, target, p, mid - 1);12 else13 ... 阅读全文
posted @ 2014-10-30 22:04 yyxayz 阅读(163) 评论(0) 推荐(0) 编辑
摘要:要考虑的东西实在也挺多的。总结如下:1 前面空格分隔符号的时候2 第一个符号位处理+ -3 遇到非数字字符退出4 为正数的时候,大于INT_MAX上溢5 为负数的时候, 小于INT_MIN下溢6 为空字符串或者空指针的时候 1 int atoi(const char *str) 2 {... 阅读全文
posted @ 2014-10-29 22:43 yyxayz 阅读(316) 评论(0) 推荐(0) 编辑
摘要:输入第一行一个整数N,表示测试数据组数。接下来的N*2行,每两行表示一个测试数据。在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串,由不超过10^6个大写字母组成。其中N 2 #include 3 #include 4 5 #define N 20 6 #de... 阅读全文
posted @ 2014-10-28 15:46 yyxayz 阅读(356) 评论(0) 推荐(0) 编辑
摘要:输出最大长度的回文子串。 1 string longestPalindrome(string s) 2 { 3 4 5 int id, mx, i, j, len, maxlen; 6 vector cvec; 7 vector ivec; 8 string st... 阅读全文
posted @ 2014-10-21 10:17 yyxayz 阅读(248) 评论(0) 推荐(0) 编辑
摘要:题目:Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters... 阅读全文
posted @ 2014-10-20 19:30 yyxayz 阅读(211) 评论(0) 推荐(0) 编辑
摘要:输入:一个数组.输出:数组中出现次数超过一半的数字.注:如果该数字不存在,则需对该数组进行检查,下面的程序假设所要查找的数字是存在的. 1 #include 2 #include 3 4 static int find(int *, int); 5 6 int main(int argc, ... 阅读全文
posted @ 2014-10-16 14:53 yyxayz 阅读(159) 评论(0) 推荐(0) 编辑