欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

 分类:算法

数据结构:块状链表

数据结构:块状链表
一、概述有时候我们需要设计这样一种数据结构:它能快速在要求位置插入或者删除一段数据。先考虑两种简单的数据结构:数组和链表。数组的优点是能够在O(1)的时间内找到所要执行操作的位置,但其缺点是无论是插入或删除都要移动之后的所有数据,复杂度是O(n)的。链表优点是能够在O(1)的时间内插入和删除一段数据,但缺点

w397090770   11年前 (2013-04-03) 5711℃ 0评论7喜欢

中缀表达式转成后缀表达式实现

中缀表达式转成后缀表达式实现
后缀表达式又叫做逆波兰表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法。按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。运用后缀表达式进行计算的具体做法:建立一个栈S 。从

w397090770   11年前 (2013-04-03) 6139℃ 0评论0喜欢

迅速在两个含有大量数据的文件中寻找相同的数据

迅速在两个含有大量数据的文件中寻找相同的数据
求解问题如下:在本地磁盘里面有file1和file2两个文件,每一个文件包含500万条随机整数(可以重复),最大不超过2147483648也就是一个int表示范围。要求写程序将两个文件中都含有的整数输出到一个新文件中。要求: 程序的运行时间不超过5秒钟。 没有内存泄漏。 代码规范,能要考虑到出错情况。 代码具有高度可重用性

w397090770   11年前 (2013-04-03) 6877℃ 3评论5喜欢

2012年腾讯招聘实习生笔试题

2012年腾讯招聘实习生笔试题
程序的问题:已知数组a[n],求数组b[n].要求:b[i]=a[0]*a[1]*……*a[n-1]/a[i],不能用除法。a.时间复杂度O(n),空间复杂度O(1)。 b.除了迭代器i,不允许使用任何其它变量(包括栈临时变量等)大家有什么解法?先不要看我下面的解法。希望大家讨论讨论一下,留个言,一起交流一下。下面给出我的解法一:[code lang="CPP"]#include <stdio.

w397090770   11年前 (2013-04-03) 4157℃ 0评论3喜欢

数据结构:位图法

数据结构:位图法
一、定义位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,其实就是位图法,引用bitset介绍:A bitset is a special container class that is designed to store bits (elements with only two possible values: 0 or 1,true or false, .

w397090770   11年前 (2013-04-03) 8592℃ 0评论8喜欢

数据结构:线段树

数据结构:线段树
一、线段树基本概念线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。

w397090770   11年前 (2013-04-03) 4844℃ 0评论4喜欢

将一个长度超过100位数字的十进制非负整数转换为二进制数(大数据处理)

将一个长度超过100位数字的十进制非负整数转换为二进制数(大数据处理)
题目描述:将一个长度超过100位数字的十进制非负整数转换为二进制数输出。输入:多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)输出:每行输出对应的二进制数。样例输入:0138样例输出:01111000分析:这个数不应该存储到一个int类型变量里面去

w397090770   11年前 (2013-04-03) 5825℃ 0评论5喜欢

2012腾讯笔试的一道算法题

2012腾讯笔试的一道算法题
题目以及要求:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。我的实现类似冒泡排序。[code lang="CPP"]#include <stdio.h>#include <string.h>// Author: 397090770// E-mail:wyphao.2007@163.com// Blog: // Date: 2012/09/29//题目以及要求:把一个字符串的大写字母放到字符串的后面,//

w397090770   11年前 (2013-04-02) 3888℃ 0评论1喜欢

给定a和n,计算a+aa+aaa+a...a(n个a)的和(大数据处理)

给定a和n,计算a+aa+aaa+a...a(n个a)的和(大数据处理)
题目描述:给定a和n,计算a+aa+aaa+a...a(n个a)的和。输入:测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。输出:对于每组输入,请输出结果。样例输入:1 10样例输出:1234567900从题中就可以看出,当a = 9, n = 100的时候,一个int类型的数是存不下100位的数,所以不能运用平常的方法来求,下面介绍我的解法,我声明

w397090770   11年前 (2013-03-31) 4102℃ 0评论1喜欢

用01背包解决石子归并问题

用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数组是用来存储所有石头的质量的。源

w397090770   11年前 (2013-03-31) 3172℃ 0评论2喜欢