数据结构&算法
文章平均质量分 80
Triangle23
Triangle23: Three sides keep firm always
展开
-
最大和连续子串
一、问题描述输入一组整数,求出这个整数数组最大和的连续子串。例如,整数数组为{4, -2, 59, -45, 4},最大和的连续子串为{4, -2, 59},最大和为61。需要注意的是要求子串连续,另外,子串的长度可以是1.这个也是曾经出过的一道面试提,最早是浙大的一道考研算法设计题。二、问题分析第一种方法。最简单的思路就是用两层循环来解决问题。外面一层是从1到整数数组原创 2013-06-15 08:52:19 · 1317 阅读 · 0 评论 -
排序-计数排序
零、数据结构和算法系列目录数据结构和算法系列目录(不断更新):http://blog.csdn.net/adrastos/article/details/9093857一、计数排序简介计数排序是一种线性时间的排序,它的时间复杂程度为O(n),虽然是线性的时间复杂程度,但是它的空间复杂程度比较高,而且用之前需要有一个硬性的前提。这个前提在后面给出,这里先来简单介绍一下计数原创 2013-07-04 23:25:33 · 1508 阅读 · 0 评论 -
Bitmap的一个简单实现
一、Bitmap简介Bitmap是一种常用的数据结构,其实就是一个连续的数组,主要是用于映射关系,如映射整数,一位代表一个数,即这里假设Bitmap有100Bytes * 8 这么多的位,那么这里可以映射出来0~799,虽然大于799的数也能够映射,但是在查找时就不能确定该位是某数还是某数加800。为什么会设计这个数据结构,因为在映射大量数据时,这个数据结构可以很好的节省空间,并且有较高的原创 2013-07-02 21:54:08 · 1172 阅读 · 0 评论 -
最大乘积连续子串
一、问题描述输入一组浮点数,求出这个浮点数组最大乘积的连续子串。举个例子,浮点数组为str[]={-3,-5,0,-1,-2,-2},这时得出来的结果是前两个浮点数的乘积,即15。需要注意的是,这个子串是要求连续的,另外,子串的长度可以为1.二、问题分析这里给出两种思路,后续可能还会加入新的思路。第一种是直接求解。即用双层循环。外面一层是从1到浮点数组的长度,里面的那层原创 2013-06-14 12:58:40 · 1226 阅读 · 1 评论 -
数据结构&算法学习
我认为学习算法和数据结构一定要根据具体的需求还学习才能掌握的更加好,所以我把自己复习数据结构&算法的内容总结成博客记录在这个子分类下。每个算法均已用C程序实现(GCC编译),并且提供源程序的下载链接。如果有错误的地方希望大家给出指导,谢谢。目录:1. Manacher算法:http://blog.csdn.net/adrastos/article/details/9093779原创 2013-06-15 08:52:47 · 1387 阅读 · 0 评论 -
排序-冒泡排序
零、数据结构和算法系列目录数据结构和算法系列目录(不断更新):http://blog.csdn.net/adrastos/article/details/9093857一、冒泡排序简介先来介绍一下什么是冒泡排序。大家肯定注意过水泡在水中的形成过程,形成是轻气泡不能在重气泡下面,也就是说在扫描带排序数组的时候,从后往前扫面,当遇到“轻”元素时在“重”元素下面时,交换两者的原创 2013-07-11 18:03:39 · 1050 阅读 · 0 评论 -
排序-归并排序
零、数据结构和算法系列目录数据结构和算法系列目录(不断更新):http://blog.csdn.net/adrastos/article/details/9093857一、归并排序简介归并排序和插入排序一样,其核心是基于比较的,所以也是比较排序中的一种。归并排序运用的分治算法的思想。在介绍归并排序的同时也简单的介绍一下分治算法,这种算法的核心讲解会在后续的博客中介绍。回原创 2013-07-07 21:47:18 · 1646 阅读 · 0 评论 -
Manacher算法
一、问题描述现给定一个已知的字符串str[],现在想要在O(n)的时间复杂度之内求出一个最长的回文子字符串(正着和倒着顺序读一致)。Manacher最早发现了可以用O(n)的时间复杂度来解决该问题,所以这种方法称之为Manacher算法。二、符号说明回文串包括奇数长的和偶数长的,一般求的时候都要分情况讨论,Manacher的这个算法做了个简单的处理,把奇偶情况统一了,为原创 2013-06-14 12:55:42 · 2648 阅读 · 3 评论 -
杨氏矩阵查找
一、问题描述给定一个二维数组,如果这个二维数组满足下面两个条件则称为杨氏矩阵。1. 在这个二维数组的每一行都按照从左到右的顺序递增。2. 在这个二维数组的每一列都按照从上到下的顺序递增。现在需要完成以下的一个功能:输入这样的一个二维数组,并且给定一个要查找的数,判断该数是否存在在这个二维数组中。二、问题分析这里不讲述遍历这个二维数组来查找该数(时间复杂程原创 2013-06-14 13:00:29 · 983 阅读 · 0 评论 -
求数组中除第i个外的所有其他数组元素的乘积
一、问题描述输入一个数组source_numbers,现在求一个target_numbers,target_numbers满足下面的关系式:要求:不能够使用除法。举个例子,比如source_numbers={1, 2, 3, 4, 5};则求出的target_numbers = {120, 60, 40, 30, 24}。这是Google曾经的一道面试题原创 2013-06-14 13:02:57 · 2305 阅读 · 0 评论 -
寻找丑数及关于程序优化效率的一点说明
一、问题描述如果一个整数值含有因数2,3,5(包括1和该整数本身)的整数称为丑数(Ugly Number)。换句话说丑数ugly_number是可以表示成形如下面表达式的形式,表达式中的i,j,k均是大于等于0的整数。举个例子,18 = 2 * 3 * 3,所以18是一个丑数。而14 = 2 * 7,所以14不是一个丑数。现在有个需求就是要找到第2013个丑数。原创 2013-06-14 13:01:40 · 1087 阅读 · 0 评论 -
排序-插入排序
零、数据结构和算法系列目录数据结构和算法系列目录(不断更新):http://blog.csdn.net/adrastos/article/details/9093857一、插入排序简介插入排序是比较简单也比较直接的一种排序算法。对于少量元素待排序数据较为有效。插入排序就像安身高排队,有一个人指挥排队从第二个人开始,按身高把当前的人安插到之前排序好的队列的合适位置。插入排原创 2013-07-05 18:55:19 · 1411 阅读 · 0 评论