Algorithms
文章平均质量分 83
过往记忆
这个作者很懒,什么都没留下…
展开
-
给定a和n,计算a+aa+aaa+a...a(n个a)的和(大数据处理)
题目描述:给定a和n,计算a+aa+aaa+a...a(n个a)的和。输入:测试数据有多组,输入a,n(1输出:对于每组输入,请输出结果。样例输入:1 10样例输出:1234567900从题中就可以看出,当a = 9, n = 100的时候,一个int类型的数是存不下100位的数,所以不能运用平常的方法来求,下原创 2012-07-13 21:12:24 · 7752 阅读 · 2 评论 -
数据结构:位图法
已移到:http://www.wypblog.com/archives/148一、定义 位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,其实就是位图法,引用bitset介绍:A bitset is a special container clas原创 2012-11-29 12:48:45 · 31474 阅读 · 15 评论 -
字符串相似度计算
已迁移到:http://www.wypblog.com/archives/58思想是编程之美上面的,我只是做了一点点优化。。。许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符(如把“a”替换为“b”); 2.增加一个字符(如把“abdd”变为“aebdd”);原创 2012-10-14 22:33:43 · 13020 阅读 · 0 评论 -
2013年各大IT公司研发类笔试题
不可以看见的部分请见http://www.wypblog.com/archives/262一、百度(武汉地区)第一部分:1、描述数据库的简单操作。2、描述TCP\IP四层模型,并简述之。3、描述MVC的内容。第二部分:1、给出a-z0-9,在其中选择三个字符组成一个密码,输出全部的情况,程序实现。2、字符串的反转,比如abcde,输出edcba.3、许多程序会大量使用字符串。对于不同的字符串,我们原创 2013-03-01 12:02:28 · 3604 阅读 · 4 评论 -
数据结构: 平衡二叉树
一、定义 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等。 平衡二叉树是在二叉排序树(BST)上引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下原创 2012-10-27 22:33:01 · 40614 阅读 · 3 评论 -
用分数形式精确表达有理数和循环无理数
已迁往:http://www.iteblog.com/archives/63学过计算机编程的就知道,在计算机中,浮点数是不可能用浮点数精确的表达的,如果你需要精确的表达这个小数,我们最好是用分数的形式来表示,而且有限小数或无限小数都是可以转化为分数的形式。比如下面的几个小数:0.3333(3) = 1/3的(其中括号中的数字是表示循环节)0.3 = 3 / 100.25 = 1 / 40. 28原创 2012-08-27 16:35:51 · 23651 阅读 · 36 评论 -
运用向量求两个很长正数的和
已迁往:http://www.wypblog.com/archives/54题目要求:实现一个加法器,使其能够输出a+b的值。输入:输入包括两个数a和b,其中a和b的位数不超过1000位。输出:可能有多组测试数据,对于每组数据,输出a+b的值。样例输入:2 610000000000000000000 10000000000000000000000000000000样例输出:8100000000原创 2012-07-12 21:24:15 · 2832 阅读 · 1 评论 -
数据结构:线段树
已迁往:http://www.iteblog.com/archives/144一、线段树基本概念 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子原创 2012-11-24 14:54:24 · 116310 阅读 · 4 评论 -
数据结构:堆
已移到:http://www.wypblog.com/archives/97堆常用来实现优先队列,在这种队列中,待删除的元素为优先级最高(最低)的那个。在任何时候,任意优先元素都是可以插入到队列中去的,是计算机科学中一类特殊的数据结构的统称一、堆的定义最大(最小)堆是一棵每一个节点的键值都不小于(大于)其孩子(如果存在)的键值的树。大顶堆是一棵完全二叉树,同时也是一棵最大树。小顶堆是一棵完全完全二原创 2012-10-16 11:27:35 · 54718 阅读 · 4 评论 -
将一个长度超过100位数字的十进制非负整数转换为二进制数(大数据处理)
已迁往:http://www.wypblog.com/archives/141题目描述:将一个长度超过100位数字的十进制非负整数转换为二进制数输出。输入:多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)输出:每行输出对应的二进制数。样例输入:0138样例输出:01111000分析:这个数不应该存储到一个int类型变原创 2012-07-14 10:22:46 · 7535 阅读 · 0 评论 -
数据结构:块状链表
已转到:http://www.wypblog.com/archives/166一、概述 有时候我们需要设计这样一种数据结构:它能快速在要求位置插入或者删除一段数据。先考虑两种简单的数据结构:数组和链表。数组的优点是能够在O(1)的时间内找到所要执行操作的位置,但其缺点是无论是插入或删除都要移动之后的所有数据,复杂度是O(n)的。链表优点是能够在O(1)的时间内插入和删除一段数据原创 2012-12-15 21:32:08 · 16884 阅读 · 22 评论 -
数据结构:红黑树
一、定义 红黑树是一种特殊的二叉查找树,它的每一个结点都被标记为红色或者黑色。是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在原创 2012-10-21 00:38:14 · 33922 阅读 · 2 评论 -
【面试题】判断一个序列是不是栈的输出序列
题目描述:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5、6、7,那么2、1、4、3、7、6、5就有可能是一个pop系列。但序列4、3、5、1、2、7、6就不可能是push序列1、2、3、4、5的pop序列。问题分析:解决这个问题我们可以申请原创 2012-08-08 21:51:52 · 46501 阅读 · 13 评论 -
[ACM]在命令行以LED样式显示输入的数字
昨天,一个同学和我说了一道ACM题目,说很有趣,于是乎我就听了他给我介绍了题目的要求:每行输入两个数如下所示:1 1234567890输出: 2 1234567890输出3 1234567890输出我想我图贴到这里大家应该知道题目的要求了吧。分析:上面的数字输出有点想LED数字输出,不知原创 2012-09-10 14:13:35 · 33756 阅读 · 5 评论 -
用01背包解决石子归并问题
题目:有一堆石头质量分别为W1,W2,W3...WN.(W<=100000)现在需要你将石头合并为两堆,使两堆质量的差为最小。 这道题目可以用01背包问题来解决。即求出和最接近sum/2的一个子集 令f(i, j)表示前i个元素中和最接近j的子集的和(有点绕),则有: f(i, j) = max( f(i-1, j), f(i-1, j-a[i])+a[i] ) ,其中a数组是用来原创 2012-09-28 16:12:52 · 9312 阅读 · 2 评论 -
快速排序及优化
转载地址:http://rdc.taobao.com/team/jm/archives/252 quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pivot放在左边,将大于 pivot放在右边,针对左右两个子序列重复此过程,直到序列为空或者只有一个元素。这篇blog主要目的是关注quicksort可能的改进方法,并对 这些改进转载 2012-09-29 16:04:49 · 8237 阅读 · 1 评论 -
小米2013校园招聘笔试题
题目:一个数组里,除了三个数是唯一出现的,其余的都出现偶数个,找出这三个数中的任一个。比如数组元素为【1, 2,4,5,6,4,2】,只有1,5,6这三个数字是唯一出现的,我们只需要输出1,5,6中的一个就行。下面是我的思路:这个数组元素个数一定为奇数,而且那要求的三个数一定不可能每一bit位都相同,所以我们可以找到其中一个bit位不同,可以把那三个数字分出来,而且可以很推出三个数肯定可以分到原创 2012-09-29 17:10:34 · 32170 阅读 · 74 评论 -
又一道编程面试题
题目以及要求:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。 我的实现类似冒泡排序。#include #include // Author: 397090770// E-mail:wyphao.2007@163.com// Date: 2012/09/29 //题目以及要求:把一个字符串的大写字母放到字符串的后面,//各个字符的相原创 2012-09-29 00:32:24 · 24652 阅读 · 40 评论 -
自己动手之 快速排序
#include#include#define Elem int typedef struct sqlist{ Elem key ; int data ; }sqlist ;void quicksort(sqlist R[] , int min , int max){ int i ,j ; i = min ; j = max ;翻译 2011-10-02 20:35:48 · 4569 阅读 · 0 评论 -
随机化快速排序
快速排序的算法的性能取决于划分的对称性。通过修改函数 Partition ,可以设计出采用随机选择策略的快速排序算法。在快速排序算法的每一步中,当数组还没有被划分时,可以在a[p:r]中随机选出一个元素作为划分基准,这样可以使划分基准的选择是随机的,从而可以期望划分是较对称的。 代码如下: #include #include int a[]={15,56,2,5翻译 2011-12-19 22:09:34 · 8998 阅读 · 2 评论 -
各种常见的排序算法及其实现
一、排序的概念一、排序(sort)或分类所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下:输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn。输出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。 1.被排序对象--文件被排序的对象--文件由一组记录组成。记录原创 2012-10-15 21:30:41 · 17135 阅读 · 0 评论 -
数据结构:胜者树与败者树
已移到: http://www.iteblog.com/archives/93假设有k个称为顺串的有序序列,我们希望将他们归并到一个单独的有序序列中。每一个顺串包含一些记录,并且这些记录按照键值的大小,以非递减的顺序排列。令n为k个顺串中的所有记录的总数。并归的任务可以通过反复输出k个顺串中键值最小的记录来完成。键值最小的记录的选择有k种可能,它可能是任意有一个顺串中的第1个记录。并归k个顺串的最原创 2012-10-15 22:15:36 · 27487 阅读 · 14 评论