c++ - 高效地乘以数组的 (n-1) 个元素

标签 c++ c performance

<分区>

Possible Duplicate:
Interview Q: given an array of numbers, return array of products of all other numbers (no division)

我有两个数组 inputArrayresultArray,每个数组都有 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)
我们也不允许使用除法。
我该如何解决这个问题?

最佳答案

在不剧透的情况下,您应该尝试使用两个变量来存储乘法结果:第 i 个元素左侧和第 i 个元素右侧的乘法累积结果。

关于c++ - 高效地乘以数组的 (n-1) 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12129885/

相关文章:

c++ - 为什么添加 constexpr 会使 VS2013 拒绝这个?

作为参数传递的 c++ float 未正确打印

c - MPI 函数 MPI_Comm_split_type 中的 "int key"参数是什么?

sql-server - SQL Server 的数据库优化顾问是否会修改数据?

python - 向量化 2 参数 .loc 更新的最快方法是什么?

Python:加速从列表中删除每个第 n 个元素

c++ - 使用模板参数包代替宏

c++ - 免费注册 com 和 Dispatch LPPICTUREDISP

android - 只读文件不能在android中使用C的remove()删除

c - 如何使用条件在C语言的for循环中输入空格