随笔分类 -  算法类

如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,问如何在迅速匹配兄弟字符串(如,bad和adb就是兄弟字符串)
摘要:若是兄弟,则str1和str2必须最少遍历一遍;若不是兄弟,则可以提前终止遍历。 阅读全文
posted @ 2011-09-26 10:42 dartagnan 阅读(1000) 评论(0) 推荐(0)
已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10
摘要:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10 阅读全文
posted @ 2011-09-26 10:06 dartagnan 阅读(2280) 评论(0) 推荐(0)
五猴分桃问题
摘要:五猴分桃问题,有意思 阅读全文
posted @ 2011-09-26 10:00 dartagnan 阅读(1955) 评论(0) 推荐(0)
二叉树结点间最大距离
摘要:二叉树结点间最大距离 阅读全文
posted @ 2011-09-26 09:30 dartagnan 阅读(881) 评论(0) 推荐(0)
java实现两个大数相加,可能出现溢出错误
摘要:Java实现大数相加,其它减法什么的雷同 阅读全文
posted @ 2011-09-18 14:30 dartagnan 阅读(1394) 评论(0) 推荐(0)
字符串的排列组合问题
摘要:字符串排列问题 阅读全文
posted @ 2011-09-17 11:26 dartagnan 阅读(805) 评论(0) 推荐(0)
[约瑟夫环]n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始... ...
摘要:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m,(少于m个数时停止)求最后一个出列的数。 阅读全文
posted @ 2011-09-16 19:03 dartagnan 阅读(3173) 评论(0) 推荐(0)
左旋转字符串
摘要:左旋字符串 阅读全文
posted @ 2011-09-15 22:17 dartagnan 阅读(338) 评论(0) 推荐(0)
最长数字串
摘要:最长数字串 阅读全文
posted @ 2011-09-15 21:48 dartagnan 阅读(267) 评论(0) 推荐(0)
反转链表
摘要:反转链表 阅读全文
posted @ 2011-09-15 19:52 dartagnan 阅读(379) 评论(0) 推荐(0)
输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
摘要:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来. 阅读全文
posted @ 2011-09-15 16:31 dartagnan 阅读(830) 评论(0) 推荐(0)
输入一个表示整数的字符串,把该字符串转换成整数并输出(实现atoi函数功能)
摘要:题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345。 阅读全文
posted @ 2011-09-15 15:59 dartagnan 阅读(3985) 评论(0) 推荐(0)
链表的实现
摘要:C/C++实现链表 阅读全文
posted @ 2011-09-15 15:41 dartagnan 阅读(210) 评论(0) 推荐(0)
用链表实现栈和队列
摘要:用链表实现栈和队列 阅读全文
posted @ 2011-09-15 15:35 dartagnan 阅读(339) 评论(0) 推荐(0)
C++用数组实现栈和循环队列
摘要:数组实现栈和队列 阅读全文
posted @ 2011-09-15 15:18 dartagnan 阅读(5863) 评论(0) 推荐(0)
堆和栈的区别
摘要:--看了程序员面试宝典,对堆和栈的含义很是混淆,下面综合一下在网站上看得结合自己的理解所说堆栈的概念:http://blog.csdn.net/dsb2510/article/details/5654772--宝典上的:预备知识:一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变 阅读全文
posted @ 2011-09-11 10:02 dartagnan 阅读(721) 评论(1) 推荐(1)
在一个字符串中找到第一个只出现一次的字符
摘要:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 我的思路是: 如果要知道一个字符是否只出现过一次,必须遍历一次字符串知道所有字符出现过的情况,从前从后都可以。但在遍历中要用数组统计每个字符的出现次数,到最后将,再遍历一遍数组,得到出现次数为1的第一个字符,取出。 空间复杂度:O(1) 时间复杂度:O(n)这是别人通过HashTable来完成的,殊途同归! REF: http://www.cnblogs.com/hackbuteer/articles/2080967.html 看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到... 阅读全文
posted @ 2011-08-03 21:05 dartagnan 阅读(2138) 评论(2) 推荐(0)
几种搜索引擎算法研究
摘要:1.引言 万维网WWW(World Wide Web)是一个巨大的,分布全球的信息服务中心,正在以飞快的速度扩展。1998年WWW上拥有约3.5亿个文档[14],每天增加约1百万的文档[6],不到9个月的时间文档总数就会翻一番[14]。WEB上的文档和传统的文档比较,有很多新的特点,它们是分布的,异构的,无结构或者半结构的,这就对传统信息检索技术提出了新的挑战。 传统的WEB搜索引擎大多数是基于关键字匹配的,返回的结果是包含查询项的文档,也有基于目录分类的搜索引擎。这些搜索引擎的结果并不令人满意。有些站点有意提高关键字出现的频率来提高自身在搜索引擎中的重要性,破坏搜索引擎结果的客观性和准确性。 阅读全文
posted @ 2011-07-02 10:17 dartagnan 阅读(278) 评论(0) 推荐(0)
分配排序---箱排序,基数排序与桶排序及排序选择方法
摘要:总的来说,排序算法按按平均时间可分为四类:(1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序;(3)O(n1+£)阶排序 £是介于0和1之间的常数,即0<£<1,如希尔排序;(4)线性阶(O(n))排序(这就是我们要讨论的分配排序) 如桶、箱和基数排序。分配排序的基本思想:排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。 箱排序(Bin Sort)1、箱排序的基本思想 箱排序也称桶排序(Buc 阅读全文
posted @ 2011-07-01 09:47 dartagnan 阅读(901) 评论(0) 推荐(0)
三种基于“分配”“收集”的线性排序算法---计数排序、桶排序与基数排序
摘要:文中代码见原文链接:http://www.byvoid.com/blog/sort-radix/[非基于比较的排序]在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下:N个数有N!个可能的排列情况,也就是说基于比较的排序算法的判定树有N!个叶子结点,比较次数至少为log(N!)=O(NlogN)(斯特林公式)。而非基于比较的排序,如计数排序,桶排序,和在此 阅读全文
posted @ 2011-07-01 09:19 dartagnan 阅读(340) 评论(0) 推荐(0)