給你乙個長度為 n 的整數陣列 nums,其中 n > 1,返回輸出陣列 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其餘各元素的乘積。
示例:輸入: [1,2,3,4]
輸出: [24,12,8,6]
思路:使用左邊乘積和右邊乘積進行計算。
初始化陣列長度n。初始化res=[0,0,...,0]。
初試化乘積k=1:
從左向右遍歷,遍歷區間[0,n):res每個位置儲存它左側所有元素的乘積。即res[i]=k , k*=nums[i]
重置乘積k=1,用來儲存元素右邊的乘積和:
從右向左遍歷,遍歷區間(n,0]:res[i]*=k,表示將當前位置的左積乘以右積。
複雜度分析
時間複雜度:o(n),進行了兩次次遍歷。
空間複雜度:o(n),借助res儲存結果
class solution:def productexceptself(self, nums: list[int]) -> list[int]:
n=len(nums)
res=[0]*n
k=1for i in range(n):
res[i]=k
k=k*nums[i]
k=1for i in range(n-1,-1,-1):
res[i]*=k
k*=nums[i]
return res
238 除自身以外陣列的乘積
題目描述 給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。解題思路 拿到題...
238 除自身以外陣列的乘積
給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 高階 你可以在常數空間複雜度內完成這個題目嗎?出於對空間複雜度分析的目的,輸出陣列不...
238 除自身以外陣列的乘積
給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。分析 如果引入乙個o n ...