【剑指Offer】构建乘积数组 解题报告(Python)

标签(空格分隔): 剑指Offer


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A1A[i-1]*A[i+1]…*A[n-1]。不能使用除法。

解题方法

LeetCode原题238. Product of Array Except Self。思路挺简单,用prod来保存之前的所有数字的乘积;回头的时候保存后面的所有数字的乘积。向前和向后的代码其实是一样的,所以题目还算简单。

代码:

# -*- coding:utf-8 -*-
class Solution:
    def multiply(self, A):
        ans = []
        _len = len(A)
        prod = 1
        for i in range(_len):
            ans.append(prod)
            prod *= A[i]
        prod = 1
        for i in range(len(A) - 1, -1, -1):
            ans[i] *= prod
            prod *= A[i]
        return ans

Date

2018 年 3 月 27 日 – 第一次把车开走了,注意离合要慢