leethot100 前缀和:238 除自身以外数组的乘积
题目
思路
题目明确说了不可以使用除法解决,如果可以使用的话,我们只需要遍历所有元素得到乘积,然后除以相应的下标元素就可以了(但是要注意此时数组中存在0这种方法会失效)。
所以这道题是一个前缀和的应用,通过题意不难想到,我们某个数前面所有数的乘积以及后面所有数的乘积,因此我们可以通过计算前缀🐔和后缀🐔,之后相乘来求得最终的结果。思路很简单,代码如下:
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
length = len(nums)
l , r , ans = [0] * length,[0] * length,[0] * length
l[0] = 1
r[length - 1] = 1
for i in range(1,length):
l[i] = l[i - 1] * nums[i - 1]
# for j in reversed(range(length-1)):
for j in range(length-2,-1,-1):
r[j] = r[j + 1] * nums[j+1]
# print(l)
# print(r)
ans =[l[i] * r[i] for i in range(len(ans))]
return ans