除自身以外陣列的乘積
給你乙個長度為 n 的整數陣列 nums,其中 n > 1,返回輸出陣列 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其餘各元素的乘積。
示例:輸入: [1,2,3,4]
輸出: [24,12,8,6]
說明: 請不要使用除法,且在 o(n) 時間複雜度內完成此題。
高階:你可以在常數空間複雜度內完成這個題目嗎?( 出於對空間複雜度分析的目的,輸出陣列不被視為額外空間。)
1.錯誤的嘗試
class
solution
for(
int i =
0; i < len; i++
)return res;
}}
輸入:
[1,0]
輸出[0,0]
預期結果
[0,1]
這種解法是無法滿足的
2.暴力方法解決
class
solution
res[i]
= ans;
}return res;
}}
2.記憶左邊與右邊的乘積就可以了
class
solution
right[len -1]
=1;for
(int i = len -
2; i >=
0; i--
)int
res =
newint
[len]
;for
(int i =
0; i < len; i++
)return res;
}}
其實記憶體還可以進一步節省,達到乙個常量級的消耗,這個就要注意遍歷的順序了
class
solution
int right =1;
//只用到乙個常量級的變數
for(
int i = len -
1; i >=
0; i--
)return ans;
}}
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 ...