自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zzran的专栏

学会等待。。。

  • 博客(17)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 求最小的k个数字和求第k小的数字

求最大的和最小的原理是一样的,只不过是求最大的在应用中用的比较多。举个比较常见的例子,大家都会购物吧,购物的时候如果去京东商城,当搜索某件商品的时候,搜索后的页面会呈现很多该类型的商品,但是京东总会给我们一些推荐,那么这个推荐是依据什么呢?其实道理很简单,京东的后台会记录客户浏览或者购买的某件商品的次数,然后进行统计,把用户浏览次数或者购买次数排名靠前的几件商品放在前几的位置。还有很多其他的应用。

2012-12-31 20:58:59 5834

原创 找出文本中存在的坏单词-后缀trie

假设给定一个关键词rob,如果某一个单词中包含此字符串,那么就断定此字符串为bad word。如problem就包含rob,那么它就是bad word。其实这种叙述是:“判断一个字符串是否是另一个字符串的子串”的另外一种描述。熟悉字符串匹配的人都知道,这个问题可以用KMP算法很快就能够解决。但是就像我们不嫌弃自己的钱多的一样,方法多了,路子就多了。所以决定应用后缀trie来解决这个问题。后缀tri

2012-12-30 20:02:15 1746

原创 一个文件有N个单词,每行一个,其中一个单词出现的次数大于N/2,怎么样才能快速找出这个单词?

熟悉hash运算的人可能很快能够想到应用hash映射来解决这个问题。就是建立key-value表,统计每个单词出现的次数,这样只需要遍历所有单词一遍就能够精确的统计出每个单词出现的次数。然后在遍历hash表,找到value值大于(注意不是等于)n/2的那个key值。算法的时间负责度和空间复杂度都为O(N),从不严格的意义上讲。找单词和找数字是一个道理,索性就给出了找数字的例子,因为找数字还有另外一

2012-12-28 13:30:40 2450

原创 给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

速度相当的快,应该是在小于o(n)的时间内就可以解决问题。但是rand()产生的随机数范围有限制,可以想想其他办法产生随机数。可以看到,所用到的内存很小,而且程序反应速度也很快。这种方法是基于要寻找数的本身特性。也可以成为bit magic。这就是比特位的强大魅力所在。首先,判断所要寻找数字x的最高比特位是1还是0,假设为1,这样可以根据40亿个数的最高位是1还是0进行操作,是0的直接舍去,是1的

2012-12-27 17:53:40 9599 7

原创 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词.

首先,我们看到这个题目应该做一下计算,大概的计算,因为大家都清楚的知道1G的文件不可能用1M的内存空间处理。所以我们要按照1M的上线来计算,假设每个单词都为16个字节,那么1M的内存可以处理多少个单词呢? 1M = 1024 KB = 1024 * 1024 B 。然后1M / 16B = 2^16个单词,那么1G大概有多少个单词呢? 有2^26个单词,但是实际中远远不止这些,因为我们是按照最大单

2012-12-27 15:10:43 27153 7

原创 第一个大数据处理程序

考虑了一下,还是决定把思路写出来吧,题目要求,给定一定量大的单词,比如说1000万个,然后找出最热门的前10,也就是出现频数排名前十的单词。思路如下:先统计出每个单词出现的次数,应用hash统计,这个方法很快。然后建立一个大小为10的小根堆,之后依次从文件中取出单词,并用单词的出现的次数和小根堆的堆顶元素的出现此处进行比较,如果大于堆顶元素出现的次数,则替换,然后调整小根堆。#incl

2012-12-26 15:37:23 3464

原创 数组连续子序列的最大的和-四种算法,四种时间复杂度

给定一组数据:31, -41, 59, 26, -53, 58, 97, -93, -23, 84。要求找到这组数据中连和最大的子序列,相信很多人都看过这个算法,能够直接给出线性时间复杂度的解法。但是还是有其他解法的,而且是循序渐进的,从O(n^3), O(n^2), O(n*logn)到O(n)。在开始算法之前要进行一下约定,如果当前输入的都是负数的时候,综合最大的子序列是空的,总和为0.

2012-12-25 22:05:57 5580 2

原创 找出第k小的数字-期望时间为O(n)-随机选择排序-源码

改正之前随机选择排序的实现:#include #include#includeusing namespace std; void swap(int &a, int &b) { int temp = a; a = b; b = temp;}int rand(int low, int high) { int size = high - low + 1; return

2012-12-23 17:12:40 1437

原创 mtk make:*** [xml_parser] Error 255

这个是环境变量的问题=======================================================================C:\Program Files\ARM\bin\win_32-pentium;C:\Program Files\ARM\ADSv1_2\bin;C:\Perl\bin;C:\Program Files\Intel\iCLS Cl

2012-12-21 10:09:08 4556

翻译 Detect if two integers have opposite signs

Given two signed integers, write a function that returns true if the signs of given integers are different, otherwise false. For example, the function should return true for -1 and +100, and should

2012-12-09 17:59:54 1087

原创 计算字符串的相似度-两种解法

一直不理解,为什么要计算两个字符串的相似度呢。什么叫做两个字符串的相似度。经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释。因为搜索引擎要把通过爬虫抓取的页面给记录下来,那么除了通过记录url是否被访问过之外,还可以这样,比较两个页面的相似度,因为不同的url中可能记录着相同的内容,这样,就不必再次记录到搜索引擎的存储空间中去了。还有,大家毕

2012-12-09 13:34:57 55003 7

原创 胜者树与败者树

胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。在k路归并排序中经常用到。

2012-12-08 21:50:58 3354 1

转载 kmp

作者:July。出处:http://blog.csdn.net/v_JULY_v/。引记    此前一天,一位MS的朋友邀我一起去与他讨论快速排序,红黑树,字典树,B树、后缀树,包括KMP算法,唯独在讲解KMP算法的时候,言语磕磕碰碰,我想,原因有二:1、博客内的东西不常回顾,忘了不少;2、便是我对KMP算法的理解还不够彻底,自不用说讲解自如,运用自如了。所以,特再写本篇文

2012-12-08 15:06:06 804 1

原创 kmp算法源码-经过比较,这个源码的速度应该是移动最快的。

#include#include#includevoid get_next(char *p, int len, int *next) { int j = -1; int i = 0; next[i] = -1; while(i < len - 1) { if(j == -1 || p[i] == p[j]) { ++i; ++j; if(p[i] != p[j]

2012-12-08 14:17:06 1154

原创 trie树的应用:查找hatword

Hat’s WordsProblem DescriptionA hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary.You are to find all the hat’s words in a dictionary.

2012-12-03 21:03:44 1431

原创 window socket 编程

一、基于TCP(面向连接)的socket编程服务器端程序:1、创建套接字(socket)。2、将套接字绑定到一个本地地址和端口上(bind)。3、将套接字设为监听模式,准备接受客户请求(listen)。4、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。5、用返回的套接字和客户端进行通信(send/recv)。6、返回,

2012-12-03 14:00:18 922

原创 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。   要编程完成这道题要求的功能可能并不难。毕竟,这道题的基本思路就是在第一个字符串中拿到一个字符,在第二个字符串中查找一下,看它是不是在第二个字符串中。如果在的话,就从第一个字符串中删除。但如

2012-12-02 21:07:51 11476 2

an efficient implemention of double array trie

这个是一个double-array的实现,就是用数组来存储trie,以减少空间的利用率。

2013-01-06

单词资源文件

用于海量数据处理的英文单词,大概在1m左右,没有太大的。

2012-12-27

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除