随笔分类 -  数据结构与算法

摘要:求一个字符串的最长重复子串:1.求字符串s的后缀数组suffix2.suffix排序3.求最长公共前缀#include#include#include#include#include#include#include#include#include#include#include#includeusi... 阅读全文
posted @ 2014-04-24 15:06 七年之后 阅读(647) 评论(0) 推荐(0)
摘要:动态规划的实质是将较大问题问题分解为较小的同类子问题。与分治法和贪心法不同的是,动态规划法利用最优子结构,自底向上从子问题的最优解逐步构造出整个问题的最优解。 设计一个动态规划算法,通常可以按一下4个步骤进行: (1)刻画最优解的结构特性;(2)递归定义最优解值;(3)自底向上计算最优解值; (4)根据计算得到的信息构造一个最优解。 一个最优化多步决策问题是否适合用动态规划方法求解有两个要素:最优子结构核重叠子问题。 虽然动态规划法也是基于分解思想的,但由于子问题往往是重叠的,为了避免重复计算,动态规划算法采用字自底向上的方式进行计算,并且保存已求解的子问题的最优解值。当这些子最优解值被重复. 阅读全文
posted @ 2013-11-01 17:07 七年之后 阅读(283) 评论(0) 推荐(0)
摘要:题目来自网络和师兄口述提供,转载请注明出处,谢谢!1.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"a... 阅读全文
posted @ 2013-09-30 20:43 七年之后 阅读(549) 评论(0) 推荐(0)
摘要:Given asingly linked list L:(L0,L1,L2,...,Ln-1,Ln).Write a program to reorder it so that it becomes(L0,Ln,L1,Ln-1,L2,Ln-2,...)struct Node{ int val_; N... 阅读全文
posted @ 2013-09-30 16:39 七年之后 阅读(729) 评论(1) 推荐(0)
摘要:排序算法可以说是最基本的算法,再熟悉不过了。习惯了使用STL的sort函数,若要自己来实现几种排序方法,真的能够准确无误的写出来吗?(以下排序算法均默认从小到大排序)。1.简单选择排序 算法思想:每次从未排序数组中选择最小数,跟排序后它对应位置元素交换。 时间复杂度:最好,平均,最坏都为O(n2)。 适用:元素较少的数组。 1 void SelectSort(int a[],int length) 2 { 3 int i,j; 4 for(i=0;i0&&temp0) 6 { 7 last=0; 8 for(j=0;ja[j+1]) 1... 阅读全文
posted @ 2013-09-30 13:53 七年之后 阅读(558) 评论(0) 推荐(0)
摘要:昨日读July大神《教你如何迅速秒杀掉:99%的海量数据处理面试题》博客,有这么一题与大家分享: 给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? July给出思路,位图/Bitmap方法,未闻,遂学之。1.map类型 map是“键-值”对的集合。map类型通常可理解为关联数组:可使用键作为下表来获取一个值,正如内置数组类型一样。而关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置来获取。--引自《C++ Primer中文版》pp.309 这里讲map的概念并不是要介绍map这个容器,而是引入map. 阅读全文
posted @ 2013-09-06 12:50 七年之后 阅读(1147) 评论(0) 推荐(0)