牛骨文教育服务平台(让学习变的简单)
博文笔记

LeetCode--238. Product of Array Except Self(数组除自身以外的乘积)Python

创建时间:2018-01-05 投稿人: 浏览次数:169

题目:

给定一个包含n个数字的数组nums,n>1,返回一个数组output,其中output[i]的内容为除了nums[i]以外的nums中其他所有元素的乘积,要求不使用除号,且时间复杂度为O(n)。

解题思路:

由于不能使用除号,所以必须只有乘号来计算。维护两个数组dp1和dp2,分别用来保存第i个位置之前所有数的乘积和第i个位置之后所有数的乘积。

代码(Python):

class Solution(object):
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        dp1 = [1]
        dp2 = [1]
        for i in range(len(nums)-1):
            dp1.append(dp1[i]*nums[i])
            dp2.append(dp2[i]*nums[-i-1])
        
        output = []
        for i in range(len(dp1)):
            output.append(dp1[i]*dp2[-i-1])
        return output

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。