題目描述:
給定長度為 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 時間複雜度內完成此題。高階...