除自身以外数组的乘积(二)
上篇文章,我们给大家留了一道算法题:除自身以外数组的乘积,并预留了足够的时间给大家思考作答,本文小编带大家以我的视角和解题思路来解答本题。
解决方案
概述
这似乎是一个简单的问题,可以在线性时间和空间内解决。可以先计算给定数组所有元素的乘积,然后对数组中的每个元素 ,将乘积除以 来求得除自身值的以外的数组乘积。
然后这样的解决方法有一个问题,就是如果输入数组中出现 0,那么这个方法就失效了。而且在问题中说明了不允许使用除法运算。这增加了这个问题的难度。
方法一:左右乘积列表
我们不必将所有数字的乘积除以给定索引处的数字得到相应的答案,而是可以利用索引处左侧的所有数字乘积和右侧所有数字的乘积相乘得到答案。
对于给定索引 i,我们将使用它左边所有数字的乘积乘以右边所有数字的乘积。让我们更加具体的描述这个算法。

