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个正整数——投影法
设假生成和为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美元给程序员,转身就去睡觉了。