赞
踩
输入: [1,2,3,4]
输出: [24,12,8,6]
思路:每个元素的乘积可以分为前缀积和后缀积,如“2”的前缀积为“1”,后缀积为“3*4”,“1的前缀积为”1“,”4“的后缀积为”1“,因此,可以先正向遍历数组,求出每个元素的前缀积,再逆向遍历数组,求每个元素的后缀积,最后将每个元素的前缀积于后缀积相乘便是该元素除自身外的乘积。
- class Solution:
- def productExceptSelf(self, nums):
- answer = [0 for _ in range(len(nums))]
- answer[0] = 1
- for i in range(1,len(nums)):
- answer[i] = answer[i-1] * nums[i-1]
- r = 1 # 由于后缀积最终要与前缀积相乘,所以我们可以先用"r"来表示当前元素的后缀积,
- # 求的结果后直接与前缀积相乘,减少空间复杂度
- for j in range(len(nums)-2,-1,-1):
- r *= nums[j+1]
- answer[j] = answer[j] * r
- return answer
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。