浏览 5543 次
锁定老帖子 主题:求1~N中1出现的次数的递归算法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-14
在网上看到的一个算法题,据说是某个大公司的面试题。题目如下:给出一个数n,求1到n这些数中1出现的次数 这个题是典型的用递归算法来解决的,代码如下: java 代码
注意代码里面用到了一个HashMap来保存10^n-1那些数的对应值,这段代码比较重要,如果不要的话,算法的时间复杂度将达到 O(N^(1/3)) (精确的说:其中n的指数是ln2/ln10 ) ;而加上后,算法的时间复杂度降低到O(logN). 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-14
抽时间看一下,使用了 速查表,速查表的生成没看太明白。
|
|
返回顶楼 | |
发表时间:2007-03-14
不叫速查表吧,只是把那些会多次用到的数据保存下来,避免重复递归(与动态规划有点像)。
|
|
返回顶楼 | |
发表时间:2007-03-14
很老的帖子了,看这个
http://www.iteye.com/post/98905 |
|
返回顶楼 | |
发表时间:2007-03-15
暂且叫查表吧,呵呵。
粗略想到一种不需要查表的logN 复杂度算法,还没有验证,待抽时间写出来。 |
|
返回顶楼 | |
发表时间:2007-08-17
想起PKU 3286和2282
当时要是看了你这篇肯定能瞬间AC |
|
返回顶楼 | |