leetcode 除自身以外陣列的乘積

2021-10-18 04:05:45 字數 1059 閱讀 4151

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

說明:示例:

輸入: [1,2,3,4]

輸出: [24,12,8,6]

方案一:除法

用到除法,就要檢驗除數是否為0

class solution 

mul *= nums[i];

}vectoroutput = vector(len);

for (int i = 0; i < len; i++) else

} else if (zero_num > 1) else

}return output;}};

時間複雜度空間複雜度

方案二:左右乘積列表

陣列l: l[i] 為nums[i] 左側所有元素乘積,其中l[0] =1

陣列r:r[i] 為nums[i] 右側所有元素乘積,其中r[len - 1]=1

輸出陣列output[i] = l[i] * r[i]

class solution 

right[len - 1] = 1;

for (int i = len - 2; i >= 0; i--)

for (int i = 0; i < len; i++)

return output;}};

時間複雜度空間複雜度

方案三:方案二優化,空間複雜度o(1)

省略l陣列空間,用output儲存l陣列。

然後動態計算r陣列的值。

class solution 

int right = 1;

output[len - 1] *= right;

for (int i = len - 2; i >= 0; i--)

return output;}};

時間複雜度空間複雜度

LeetCode 除自身以外陣列的乘積

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

Leetcode 除自身以外陣列的乘積

分析 這道題不能使用除法,顯而易見的方法就是左邊的乘積乘以右邊的乘積,這樣很好理解。class solution for int i n i 0 i for int i 1 i n i return ans 高階 題目還提到在時間複雜度o n 的情況下,是否可以在空間複雜度為常數的級別內完成。分析 ...

除自身以外陣列的乘積

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