码迷,mamicode.com
首页 > 编程语言 > 详细

【笔试题-腾讯】给定一个数组a[N],我们希望构造数组b[N]

时间:2015-09-05 17:48:01      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

  腾讯2012实习生笔试题(加分题):

  给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]。在构造过程:
    a)不允许使用除法;
    b)要求O(1)空间复杂度和O(n)时间复杂度;
    c)除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);
    请用程序实现并简单描述。

  题意应该不难理解,乍一看有点儿无从下手的感觉,思考后没有突破的话就想放弃了。看到网上其他同学也给出了解法,代码很简洁,但是理解起来不是很直观。于是决定在纸上写写画画,写完后恍然大悟。所以,以后遇到问题,没有思路的时候不妨写写画画,保不准在这个过程中就有了思路。看过下面这张图后,就比较容易理解解题代码了。技术分享

具体代码的话可以参考CSDN上一位同学写的,代码很简洁,http://blog.csdn.net/wumuzi520/article/details/7841280

技术分享
 1 void Translate(int a[], int b[], int n)
 2 {
 3     b[0] = 1;
 4     for (int i = 1; i <= n-1; i++)
 5     {
 6         b[i] = b[i-1]*a[i-1];
 7     }
 8 
 9     for (int i = n-1; i >= 1; i--)
10     {
11         b[i] *= b[0];
12         b[0] *= a[i];
13     }
14 }
构造b[N]

 

【笔试题-腾讯】给定一个数组a[N],我们希望构造数组b[N]

标签:

原文地址:http://www.cnblogs.com/iloveprogramming/p/4783404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!