【发布时间】:2012-08-26 11:52:00
【问题描述】:
可能重复:
Interview Q: given an array of numbers, return array of products of all other numbers (no division)
我有两个数组 inputArray 和 resultArray 每个都有 n 元素。
任务是resultArray 中的第 n 个元素应该与 inputArray 中的所有元素相乘,inputArray 中的第 n 个元素除外(n-1 元素中的所有元素)。
例如。 inputArray={1,2,3,4}
然后resultArray={24,12,8,6}
这很容易......
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
if(i != j) resultArray[i] *= inputArray[j];
但问题是复杂度不应超过 O(n)
我们也不允许使用除法。
我该如何解决?
【问题讨论】:
-
和
log10 (inputArray[i])相加算作弊,然后做resultArray[i] = pow(10., sum - log10(inputArray[i]))? -
如果你能把这个问题转化为除法就很简单了。如果将结果视为除法而不是乘法的结果,结果中的第 i 个元素是什么?
标签: c++ c performance