leetcode238 除自身以外陣列的乘積

2021-10-05 18:53:59 字數 1093 閱讀 9140

給你乙個長度為 n 的整數陣列 nums,其中 n > 1,返回輸出陣列 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其餘各元素的乘積。

示例:

輸入:[1

,2,3

,4]輸出:[24

,12,8

,6]

提示:題目資料保證陣列之中任意元素的全部字首元素和字尾(甚至是整個陣列)的乘積都在 32 位整數範圍內。

說明: 請不要使用除法,且在 o(n) 時間複雜度內完成此題。

高階

你可以在常數空間複雜度內完成這個題目嗎?( 出於對空間複雜度分析的目的,輸出陣列不被視為額外空間。)

建立乙個輔助陣列auxiliary,陣列的i位置用來記錄nums陣列0~i-1位置的乘積。

然後從後先前遍歷原始陣列,同時用乙個變數totalnum記錄從後向前的累乘。

res[i]位置的值等於auxiliary[i](nums[0]~nums[i-1]的累乘)乘以totalnum(nums[-1] ~nums[i+1]的累乘)。

class

solution

vector<

int>

res(nums.

size()

,0);

int totalnum =1;

for(

int i = nums.

size()

-1; i >=0;

--i)

return res;}}

;

考慮高階問題,即額外的空間為常數。我們用最終的結果陣列來代替輔助陣列即可。

class

solution

int totalnum =1;

for(

int i = nums.

size()

-1; i >=0;

--i)

return auxiliary;}}

;

leetcode 238 除自身以外陣列的乘積

給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。高階 你可以在常數空間複雜...

leetcode238 除自身以外陣列的乘積

從左到右遍歷一趟,記錄每個位置左邊的乘積 首位為1 從右到左走一趟,將上一步的結果累乘每一位右邊的乘積 class solution object def productexceptself self,nums if not nums return output 1 len nums k 1 for...

LeetCode 238 除自身以外陣列的乘積

題目描述 給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。高階 你可以在常...