zoukankan      html  css  js  c++  java
  • 生成数组C面试题精选

    PS:今天上午,非常郁闷,有很多简略基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!

        1、腾讯面试题:给定一数组a[N],我们希望造构数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在造构过程当中,不允许应用除法:

        要求O(1)空间复杂度和O(n)的时间复杂度;

        除遍历计数器与a[N] b[N]外,可不应用新的量变(括包栈时临量变、堆空间和全局静态量变等);

        实现序程(主流编程语言任选)实现并简略描述。 

    void main(void){
    
            int a[5]={1,3,5,7,9};
            int b[5];
            int i;
            b[0]=1;
            for (i=1;i<5;i++){
                    b[i]=b[i-1]*a[i-1];
            }
    
            for(i=3;i>=0;i--){
                    b[0]*=a[i+1];
                    if(i==0)
                            break;
                    b[i]*=b[0];
            }
            for(i=0;i<5;i++){
                    printf("%d ",b[i]);
            }
    
    }

        2、机随生成和为S的N个正整数——投影法

        参考 http://blog.csdn.net/morewindows/article/details/8439393

        设假生成和为20的4个正整数:

        每日一道理
    书,各种各样的书。书,寄托着人类热切的希望;书,蕴含着人类丰富的感悟。提起书,会有说不完的话语……
    #include<time.h>
    int sort(int *array,int len){
            int i=0;
            int j=0;
            unsigned tmp;
            for(i=0;i<len-1;i++){
                    for(j=0;j<len-i-1;j++){
                            if(array[j]>array[j+1]){
                                    tmp = array[j];
                                    array[j] = array[j+1];
                                    array[j+1] =tmp;
                            }
                    }
            }
            for(i=0;i<len;i++){
                    printf("%d  ",array[i]);
            }
            printf("\n");
            return 0;
    }
    
    int generate(){
            int i=0,a[3],b[4];
            srand((unsigned )time(NULL));
            for(i=0;i<3;i++){
                    a[i]=rand()%20;
                    printf("%d ",a[i]);
            }
            printf("\n");
            sort(a,3);
            printf("///////\n");
            b[0]=a[0];
            printf("%d ",b[0]);
            for(i=1;i<3;i++){
                    b[i]=a[i]-a[i-1];
                    printf("%d ",b[i]);
            }
            b[3]=20-a[2];
            printf("%d ",b[3]);
            printf("\n");
    }
    
    void main(){
            generate();
    }

    文章结束给大家分享下程序员的一些笑话语录: 打赌
    飞机上,一位工程师和一位程序员坐在一起。程序员问工程师是否乐意和他一起玩一种有趣的游戏。工程师想睡觉,于是他很有礼貌地拒绝了,转身要睡觉。程序员坚持要玩并解释说这是一个非常有趣的游戏:"我问你一个问题,如果你不知道答案,我付你5美元。然后你问我一个问题,如果我答不上来,我付你5美元。"然而,工程师又很有礼貌地拒绝了,又要去睡觉。  程序员这时有些着急了,他说:"好吧,如果你不知道答案,你付5美元;如果我不知道答案,我付50美元。"果然,这的确起了作用,工程师答应了。程序员就问:"从地球到月球有多远?"工程师一句话也没有说,给了程序员5美元。  现在轮到工程师了,他问程序员:"什么上山时有三条腿,下山却有四条腿?"程序员很吃惊地看着工程师,拿出他的便携式电脑,查找里面的资料,过了半个小时,他叫醒工程师并给了工程师50美元。工程师很礼貌地接过钱又要去睡觉。程序员有些恼怒,问:"那么答案是什么呢?"工程师什么也没有说,掏出钱包,拿出5美元给程序员,转身就去睡觉了。

  • 相关阅读:
    JavaScript数据类型(第一天)
    数据库的事务隔离级别
    SSH(远程登录)原理
    Hadoop安装
    activiti学习第二天
    activiti学习第一天
    .net调用系统软键盘(兼容win7及win10)
    使用Blend设计出符合效果的WPF界面
    Mysql的收获
    PHP文件上传安全处理的步骤
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3040925.html
Copyright © 2011-2022 走看看