题目:

 好长,大意是返回一个列表,列表中第i个元素为nums中出了i以外元素的乘积

 注意不能用除法,时间复杂度为O(n) 空间复杂度为O(1)


解题思路:

 利用返回的列表从前往后算一遍,再从后往前算一次即可


代码:

class Solution(object):
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        result = [1]

        for i in range(1,len(nums)):
            result.append(result[i-1] * nums[i-1])

        product = 1
        for i in range(len(nums)-1,-1,-1):
            result[i] = product * result[i]
            product *= nums[i]

        return result