免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2834 | 回复: 14
打印 上一主题 下一主题

google的那道面试题最快的方法应该是 [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-04 11:53 |只看该作者 |正序浏览
计算第一位出现1的个数,计算第二位出现1的个数...
加起来

论坛徽章:
0
15 [报告]
发表于 2006-04-07 17:21 |只看该作者

瞎写了一个,也够慢的...不好意思,是不是汇编快呀????

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>

static int dig_1 =0;

int my_fun(const int i)
{
    char a[100];
    int len;

    memset(a,0x00,100);
    itoa(i,a,10);

    len = strlen(a);
    while(len>=0)
    {
       if(a[--len]=='1')
          dig_1++;
    }
    return dig_1;
}

void main()
{
    int n=1;
    while(1)
    {
        if(my_fun(n) == n)
            printf("%d  \n",n);
        n++;
    }
}Sample TextSample Text

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
14 [报告]
发表于 2006-04-04 14:01 |只看该作者
仔细的想想,确实有点麻烦
首先需要一些数学假设和数学证明

论坛徽章:
0
13 [报告]
发表于 2006-04-04 13:44 |只看该作者
是的,误解了,我一看到按位就想到bit操作上面去了...道歉

论坛徽章:
0
12 [报告]
发表于 2006-04-04 13:44 |只看该作者
那个帖子我看过,其中只有 search 最大 n 值的算法是 non- trivial 的(yzc2002),其它都是明显的。

论坛徽章:
0
11 [报告]
发表于 2006-04-04 13:43 |只看该作者
cjaizss 说的“位”不是指计算机里的bit,是指十进制数的位,Converse误解了吧?
但这只是说求f(n)的方法,与我在那个贴子里的做法是一致的。在那个证明过程中给出的递归式就是按十进制位来计算的,n有几位,递归函数就执行几次。根据n求f(n)是一个log10(n)的算法
但求f(n)=n的解是另外一个过程,我那个程序需要验证约5000个数,才能得到所有的解。这个数应该可以进一步缩小。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2006-04-04 13:32 |只看该作者
原帖由 converse 于 2006-4-4 13:30 发表
>>算法和语言无关
那请问有几个语言支持位操作呢?你这个对数级别复杂度的算法也许只有对支持位操作的语言成立吧?既然如此,就不能下结论说是对数级别的复杂度而应该加一个前提条件.

我没有用位操作,不过如果一个语言连/和%两个运算都不支持,我也就不说什么了,如果这两个都不支持,那么这道题目根本就做不出来,更谈不上好的算法

论坛徽章:
0
9 [报告]
发表于 2006-04-04 13:30 |只看该作者
>>算法和语言无关
那请问有几个语言支持位操作呢?你这个对数级别复杂度的算法也许只有对支持位操作的语言成立吧?既然如此,就不能下结论说是对数级别的复杂度而应该加一个前提条件.

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2006-04-04 13:27 |只看该作者
原帖由 converse 于 2006-4-4 13:16 发表
>>按位计算出来的
这个方法跟用语言的api接口做出来有什么分别?

算法和语言无关

论坛徽章:
0
7 [报告]
发表于 2006-04-04 13:16 |只看该作者
>>按位计算出来的
这个方法跟用语言的api接口做出来有什么分别?
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP