LeetCode238. 除自身以外陣列的乘積c++
阿新 • • 發佈:2019-02-12
給定長度為 n 的整數陣列 nums
,其中 n > 1,返回輸出陣列 output
,其中 output[i]
等於 nums
中除 nums[i]
之外其餘各元素的乘積。
示例:
輸入:[1,2,3,4]
輸出:[24,12,8,6]
說明: 請不要使用除法,且在 O(n) 時間複雜度內完成此題。
就是新建兩個陣列,前一個數組pre第i位存原陣列i位之前所有數的乘積複雜度n;第二個after存第i位之後的乘積,複雜度n,最後遍歷陣列,計算陣列pre[i]*after[i]就是ans[i]。三個迴圈並列,複雜度O(N).
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int s=1; int rs=1; int n=nums.size(); vector<int>pre(n); vector<int>after(n); vector<int>output(n); for(int i=1;i<=n-1;i++) { rs=rs*nums[n-i]; after[n-i-1]=rs; s=s*nums[i-1]; pre[i]=s; } after[n-1]=1; pre[0]=1; for(int i=0;i<=n-1;i++) { output[i]=pre[i]*after[i]; } return output; } };