[Leetcode238] 除自身以外陣列的乘積
阿新 • • 發佈:2018-11-27
給定長度為 n 的整數陣列 nums
,其中 n > 1,返回輸出陣列 output
,其中 output[i]
等於 nums
中除 nums[i]
之外其餘各元素的乘積。
說明: 請不要使用除法,且在 O(n) 時間複雜度內完成此題。
進階: 你可以在常數空間複雜度內完成這個題目嗎?( 出於對空間複雜度分析的目的,輸出陣列不被視為額外空間。)
res = [ 1 , a0 , a0a1 , a0a1a2]
t = [ a3 , a3a2 , a3a2a1]
python:
class Solution(object): def productExceptSelf(self, nums): """ :type nums: List[int] :rtype: List[int] """ if len(nums) <= 1: return nums res = [1] * len(nums) for i in range(1,len(nums)): res[i] = res[i - 1] * nums[i - 1] t = 1 i = len(nums) - 2 while i >= 0: t *= nums[i + 1] res[i] *= t i -= 1 return res
C++:
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int n = nums.size(); if(n <= 1) return nums; vector<int> res(n,1); for(int i = 1;i < n;i++){ res[i] = nums[i-1]*res[i-1]; } int t = 1; for(int i = n - 2;i >= 0;i--){ t *= nums[i + 1]; res[i] *= t; } return res; } };