algorithm - Puzzle.. 求解数组 X 中值的乘积

标签 algorithm puzzle

你能帮我解决这个问题吗?

您有一个包含 n 个整数的无序数组 X。找到包含 n 个元素的数组 M,其中 Mi 是 X 中除 Xi 之外的所有整数的乘积。你不能使用除法。您可以使用额外的内存。 (提示:存在比 O(n^2) 更快的解决方案。)

基本的 - O(n^2) 和一个使用除法很容易。但我无法找到比 O(n^2) 更快的解决方案。

最佳答案

left[i]1..iX 中所有元素的乘积。设 right[i]i..NX 中所有元素的乘积。您可以通过以下方式在 O(n) 中计算两者而无需除法:left[i] = left[i - 1] * X[i]右[i] = 右[i + 1] * X[i];

现在我们将计算 M:M[i] = left[i - 1] * right[i + 1]

注意:leftright是数组。

希望清楚:)

关于algorithm - Puzzle.. 求解数组 X 中值的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057712/

相关文章:

c++ - Blueberry (SPOJ) - 超出动态规划时间限制

algorithm - 递归 : cut array of integers in two parts of equal sum - in a single pass

algorithm - 如何从字母矩阵中找到可能的单词列表 [Boggle Solver]

Java 元编程难题 : get all annotations that are themselves annotated by a given annotation A

algorithm - 检查输入字符串是否为正确的 RPN 表达式的最快方法是什么?

c# - 从数组中删除重复项

python - 搜索元组列表以查找匹配子字符串的算法方法?

c++ - 选择矩形以最大化面积

algorithm - 解码排列的英文字符串

c - 在 c 二进制中,测试数字是否在范围内