238 除自身以外陣列的乘積

2021-09-11 20:46:35 字數 936 閱讀 3894

題目描述:

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

示例:

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

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

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

解題思路:

拿到題目,輸出除自身以外其餘數的乘積,覺得題目很簡單。直接先算出陣列所有元素的乘積,再除以本身,不就是其餘數的乘積嘛。仔細讀題發現,除法是被禁止的。

又想到用雙層迴圈來做,第一層迴圈遍歷陣列,第二層迴圈計算除本身以外所有元素的乘積,發現又被題目禁止了,要求o(n)的複雜度。

一時難住了我,找一下解題思路吧。

實際上除本身以外其餘數的乘積,是由該數本身左邊數的乘積與右邊數的乘積相乘得到的。

如,輸入: [1,2,3,4],順序記錄左邊數乘積的結果為[1,1,2,6],逆序記錄右邊數乘積的結果為[1,4,12,24],所以最終的結果為[1 * 24,1 * 12,2 * 4,6 * 1]。思路有了,開始實現吧。

**實現:

public static int productexceptself(int nums) 

//將每個數的左邊數的乘積與右邊數的乘積相乘得到最終結果

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

return output;

}

執行結果:

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 ...

238 除自身以外陣列的乘積

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