給你一個整數數組?nums
,返回 數組?answer
?,其中?answer[i]
?等于?nums
?中除?nums[i]
?之外其余各元素的乘積?。
題目數據?保證?數組?nums
之中任意元素的全部前綴元素和后綴的乘積都在??32 位?整數范圍內。
請?不要使用除法,且在?O(n)
?時間復雜度內完成此題。
示例 1:
輸入: nums =[1,2,3,4]
輸出:[24,12,8,6]
示例 2:
輸入: nums = [-1,1,0,-3,3] 輸出: [0,0,9,0,0]
提示:
2 <= nums.length <= 105
-30 <= nums[i] <= 30
- 輸入?保證?數組?
answer[i]
?在??32 位?整數范圍內
進階:你可以在?O(1)
?的額外空間復雜度內完成這個題目嗎?( 出于對空間復雜度分析的目的,輸出數組?不被視為?額外空間。)
class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> ans(n);ans[0] = 1;for(int i = 1; i <n; i++){ans[i] = nums[i - 1] * ans[i - 1];}int R = 1;for(int i = n - 1;i >= 0;--i){ans[i] = ans[i] * R;R *= nums[i];}return ans;}
};