- 博客(34)
- 资源 (2)
- 收藏
- 关注
原创 计算数自然数序列中的1和2
问题: 给定一个自然数N,计算1,2,3...N中,出现1和2的数量。比如1,2,3...10,一共出现了3次,1,2,3...12,一共出现了7次。 思路: 比如计算54321,可以先计算50000,再计算50001-54321中1和2的个数,而后者又可以看成计算4321中1和2的个数,于是简化了问题。其中计算50000的时候,可以计算49999中有多
2014-10-22 22:02:06 1442
原创 计算质因数
问题: 计算一个数的质因数个数,1不是质因数。比如20=2*2*5,2、2、5就是20的三个质因数。思路: 从小到大,找到N的因数M,递归查找M和N/M的的质因数。
2014-10-22 21:57:26 850
原创 把数字串变成2012玛雅密码
问题: 玛雅密码是一串由0、1、2组成的密码,这串数字中如果包含2012,就可以解开末日的大门。给定一串由0、1、2组成的字符串,只有相邻的数字可以交换,求通过最少多少次变换可以得到玛雅密码,并给出这串密码。 思路: 经过很久很久的尝试,放弃了一次性拼凑2012的想法,改用预处理得到所有数字范围中符合玛雅密码的部分,再递归遍历给定的数字串,得到该串所有可
2014-10-22 21:57:23 1078
原创 把数字拆分成2的幂的和
问题: 任何数都能分解成2的幂,比如 7=1+1+1+1+1+1+1 =1+1+1+1+1+2 =1+1+1+2+2 =1+2+2+2 =1+1+1+4 =1+2+4共有6种分解方式,设f(n)为任意正整数可能分解总数,比如f(7)=6写个算法,输入数,求出其分解的总数。
2014-10-22 21:55:23 3294
计算质因数
问题: 计算一个数的质因数个数,1不是质因数。比如20=2*2*5,2、2、5就是20的三个质因数。思路: 从小到大,找到N的因数M,递归查找M和N/M的的质因数。def count_prime(number, expr): count = 0 for i in range(2, number/2 + 1): if numbe...
2014-10-18 10:53:58 391
把数字拆分成2的幂的和
问题: 任何数都能分解成2的幂,比如 7=1+1+1+1+1+1+1 =1+1+1+1+1+2 =1+1+1+2+2 =1+2+2+2 =1+1+1+4 =1+2+4共有6种分解方式,设f(n)为任意正整数可能分解总数,比如f(7)=6写个算法,输入数,求出其分解的总数。 思路: 先按照树形结构,把一个数...
2014-10-18 10:47:28 1266
把数字串变成2012玛雅密码
问题: 玛雅密码是一串由0、1、2组成的密码,这串数字中如果包含2012,就可以解开末日的大门。给定一串由0、1、2组成的字符串,只有相邻的数字可以交换,求通过最少多少次变换可以得到玛雅密码,并给出这串密码。 思路: 经过很久很久的尝试,放弃了一次性拼凑2012的想法,改用预处理得到所有数字范围中符合玛雅密码的部分,再递归遍历给定的数字串,得到该串所有可能的变换,并比...
2014-10-16 22:43:09 194
原创 计算数自然数序列中的1和2
问题: 给定一个自然数N,计算1,2,3...N中,出现1和2的数量。比如1,2,3...10,一共出现了3次,1,2,3...12,一共出现了7次。 思路: 比如计算54321,可以先计算50000,再计算50001-54321中1和2的个数,而后者又可以看成计算4321中1和2的个数,于是简化了问题。其中计算50000的时候,可以计算49999中有多少个1和2,...
2014-10-16 22:30:10 200
原创 四堆抽牌如何获胜
问题描述: 发四堆扑克,一堆是2张,一堆是5张,一堆是8张,一堆是10张。排列如下: 2 5 8 10 两个人,轮流拿牌。每次只能在一堆里面拿,无论拿几张都可以,最多一次可以把任意一堆牌全拿走。经过N轮拿牌过后,拿最后一张牌的人输。 解决思路:1. 从最简单的情况开始考虑,在简单的情况下可以取胜,才能在更复杂的情况取胜;2. 我能否取胜,取决于“我本次拿走...
2014-03-19 19:33:21 652
原创 html5与css3学习实践--为页面元素增加样式的基本方法
有了网页的骨架,还缺少网页元素的渲染,也就是CSS样式表。一般需要把CSS样式配置独立成文件,然后在网页的头部引用CSS样式文件。引用代码如下: <head> <meta content="text/html; charset=utf-8" > <link rel="stylesheet" type="text/css"...
2014-02-19 20:52:33 157
原创 html5与css3学习实践--基础的内容划分标签
从位置上划分出网页的区域以后,就需要用到网页的内容标签了,比如<article>、<aside>、<nav>、<p>、<h1>等。网页中,这些内容标签和位置标签交错在一起,比如像下面这样: <body> <header> <h1>
2014-02-19 09:56:09 154
原创 html5与css3学习实践--网页主体的位置划分标签
网页中的body是主体内容,按照html5的标准,可以按照<header>、<footer>、<section>来进行布局上的划分。一个基本的结构可以是这样: <body> <header> <h1>Body Title</h1>
2014-02-18 13:30:29 242
原创 html5与css3学习实践--网页的最简结构
一个网页的基础结构 <!DOCTYPE html><html> <head> <meta charset="utf-8"> <titile>Test Title</title> </head> &l
2014-02-18 10:08:27 166
原创 【讨论帖】Mockito测试使用了TaskExecutor、FutureTask的类
在Spring框架下写了一个东西,用到了org.springframework.core.task.TaskExecutor这个接口,用它来执行一个FutureTask实例,但编写单测的时候遇到个问题。 我按照惯常的套路编写单测: @ResourceTaskExecutor taskExecutorReal; // 从上下文中得到的实际的TaskExecuto...
2013-06-03 15:25:32 2303
原创 求最长升序序列
求一个序列的最长的升序序列,比如数组array[10]。 我的想法:1. 以变量max_length记录最长的序列长度,以loc记录最长序列的位置,初始化都为0。2. 设置变量temp_length=0,temp_loc=0,遍历每个元素array[i]{ 如果array[i]<=array[i+1],temp_length++; 否则{ ...
2012-04-07 22:14:47 201
原创 最后拿硬币的人输
两个人轮流拿10个硬币,每次可以拿1或2或4个,拿到最后的那个人为输,问:怎样才能必胜? 思路是从最简单的情况概况,找到一定的规律。 总结如下,其中A、B代表两个人,数字代表对应人选择前剩下的硬币数,第一行的解释是“有1个硬币留给了A,A拿了一个,剩下0个硬币留给了B,A就输了”: A B 对A的结果1 0 lose2 ...
2012-03-29 19:57:15 574
原创 JSpider学习七——调试SpiderImpl的crawl
从main的第一句,走到最后,进入JSpider的start方法中,调用SpiderImpl的crawl。 前面对crawl做了分析,这里不重复流水了。context.getEventDispatcher().dispatch(new SpideringStartedEvent(context.getBaseURL()))将Spider开启事件派发出去,然后进入context.getAg
2012-03-23 21:31:34 963
原创 JSpider的调试
经过了毕设、换工作等等的事情,重新来看看这个JSpider,希望能完成对它的学习。 重新看JSpider,有了新的思路。打算从一个具体的应用实例入手,从调试过程理解它的原理和设计。 (1) 回顾下怎么在eclipse里面导入JSpider。New-->Project-->Java Project from Existing Ant Builder。 (2) 配
2012-03-23 20:14:52 1529
原创 最长的滑道
问题: Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 1...
2012-03-19 19:53:40 132
原创 最长的滑道
问题:Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21
2012-03-02 22:37:06 2181
原创 求一个字符串中的最长回文前缀
如题,需要说明的是这个与我的上一篇博客是不一样的,这个求的是前缀,多了个限定条件。我的思路,1. 首先可以按照上一篇的博客来解,但显然浪费了。2. 我们需要充分利用前缀这个条件,我的第一反应就是用栈,但是想来想去也没有好办法,后来想想,如果是回文前缀,那么一定会在回文的另一端出现字符串的首字母。于是,a. 遍历字符串,找到所有与首字母相同的位置,存入数组ends,复
2012-03-02 20:42:20 5127 3
原创 求一个字符串中的最长回文序列
如题,下面说说我的思路,我想到的算法如下:a. 遍历字符串,找到所有相邻两个字母相同的位置(比如aa),加入到链表centers1中,找到所有隔一个字符相同的位置(比如aba),加入到centers2中,复杂度O(N);b. 设置最大回文的长度maxLength=2和回文的起始位置start=centers1[0];c.遍历centers1,对每一个位置进行如下操作:
2012-03-02 19:46:28 3127
原创 网页去重问题
问题:假设有10亿网页已经被我们存下来,并提供如下信息:网页全文(即网页的源码)、全文长度、网页正文(即网页中提取的主体文字)、正文长度,以及其他网页提取物等,现在希望去掉其中的重复网页,请提出可行的方案,计算出每个网页对应的重复度,你可以自己对网页重复下定义,也可以提出需要哪些更多的网页提取物来实现更好的去重复方案。我的思路:1. 根据网页正文做hash表。a. 网页
2012-03-02 18:31:51 1412
原创 大量URL去重
[size=medium]问题:[i]有大量的字符串格式的URL,如何从中去除重复的,优化时间空间复杂度[/i]我的思路,1. 将URL存入hash链表,[b]每个URL读入到hash链表中[/b],遇到重复的就舍弃,否则加入到链表里面,最后遍历得到所有不重复的URL。空间复杂度M,时间复杂度为O(N+N/M),M为不重复的URL,N为总URL数,但是M无法预测,所以存在风险,...
2012-03-01 20:05:30 348
原创 找出数组中和为N的所有配对
[i][size=small]有一个集合a,里面有n个正整数,乱序排列。给定一个正整数N,求,a中任意两个数相加等于N,共有哪些种组合情况。例如,集合为{1,3,44,2,4,5,54,222,368} N=6,则结果集为{1,5},{2,4} [/size][/i][size=medium]我的思路,[list]1. 用N减去每个元素得到另一个数组b,[b]嵌套循环[/b]找到...
2012-03-01 19:43:38 1397
一道算法题——从数据流中随机去m个数
题目:有一个很大很大的输入流,大到没有存储器可以将其存储下来,且只输入一次,如何从这个输入流中随机取得m个记录。我的思路:首先,存储开始的m条记录,存放于数组result[m]中;然后,假设有n条记录,每一次读取记录后,取随机数x,0<= x < n;判断随机数, 当0<= x < m时,我们将记录存放到result[x]中; 当m<= x < n...
2012-03-01 15:39:06 256
原创 一道算法题——合并有交集的集合
题目如下,给定一个字符串的集合,格式如: {aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh} 要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出 {aaa bbb ccc ddd hhh},{eee fff}, {ggg} (1)请描述你解决这个问题的思路; (2)
2012-02-29 22:46:12 4453 2
原创 JSpider学习六 —— DispatcherThread和WorkerThread
DispatcherThread-------------------------------------------------------------------------------- DispatcherThread继承了java.lang.Thread类,包含了两个成员: protected DispatcherTask task; // 分派器任务实例
2012-02-13 12:56:49 1817
原创 JSpider学习五 —— WorkerThreadPool
之前提到SpiderImpl的两个重要成员spiders和thinkers,他们都是WorkerThreadPool类的实例,下面分析这个类的代码。 该类继承了java.lang.ThreadGroup类,有三个成员: /** Task Dispatcher thread associated with this threadpool. */ protected Di
2012-02-10 09:54:57 1569
原创 JSpider学习四 —— Spider
在代码里Spider是一个接口,其中只包含public void crawl(SpiderContext context)这一个方法,含义比较明显,在给定的上下文中爬行。 代码里只有一个实现类SpiderImpl,成员如下: WorkerThreadPool spiders,爬虫线程池; WorkerThreadPool thinkers,思考者线程池。初始化方法
2012-02-09 21:51:29 1636
原创 JSpider学习三 —— 启动代码分析
jspider.sh---------------------------------------------------------------------------------------------- JSpider从jspider.sh文件运行,在该shell脚本中指定了如下几个变量: JSPIDER_HOME,JSpider的主目录,通过该目录去寻找conf/、
2012-02-09 18:18:21 2463
原创 JSpider学习二 —— 应用示例
首先学习JSpider的第一个应用,Check Errors,用来检查网页上的链接以及迭代出来的其他链接是否有效。 使用命令JSpider [url] [CheckErrors]。这里url指要检查的链接,CheckErrors指实现该功能的配置文件目录。 可见,使用的关键就是配置文件的编写。 配置文件一般放在conf/下面。实现CheckErrors功能的配置文件就
2012-02-09 17:05:14 3918 1
原创 JSpider学习一 —— 基础
为了更好的掌握Java,我开始学习JSpider这个开源软件,希望能从它的设计和实现上,更清楚的认识Java,了解更多Java的设计和实现技巧,以点带线,以线带面,去了解更多自己需要学习的东西。 作为开始,我下载并阅读了JSpider User Manual的前半部分,下载了源码。 根据文档的说明编译源码,遇到了错误,参照http://blog.nunnun.jp/Jspider
2012-02-09 14:41:25 3742
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人