算法问题

来源:互联网 发布:linux文件写入权限 编辑:程序博客网 时间:2024/06/04 00:25

 28)给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法:<p></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: 'Microsoft YaHei';">要求O(1)空间复杂度和O(n)的时间复杂度;</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: 'Microsoft YaHei';">除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等);</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: 'Microsoft YaHei';">实现程序(主流编程语言任选)实现并简单描述。</span></p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;"><span style="font-family: 'Microsoft YaHei';">题目和答案来自MreWindow的博客,要看解析的可以移步</span></p><div><span style="font-family: 'Microsoft YaHei';">http://blog.csdn.net/morewindows/article/details/8742666</span></div>
int a[] ={2,3,4,5,6};        int b[] =new int[5];        b[0] = 1;        for(int i=1;i<5;i++){            b[i]=b[i-1]*a[i-1];        }        for (int i = 5 - 1; i >= 1; i--)        {            b[i] *= b[0];            b[0] *= a[i];        }        for(int i=0;i<5;i++){            Log.i("eeee","eeee"+b[i]+"\n");        }


28)给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法:

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

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

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


0 0
原创粉丝点击