《剑指Offer》刷题之构建乘积数组
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)
对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。 - 示例:
示例 1 :
输入:[1,2,3,4,5]
返回值:[120,60,40,30,24]
- 代码1:
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
B = [1] * len(A)
for i in range(len(A)):
for j in (A[:i] + A[i+1:]):
B[i] *= j
return B
- 算法说明:
建立和A长度一样的元素全为1的列表B;
逐个遍历A中的元素,累积求出结果。