product-of-array-except-self.cpp (1019B)
1 class Solution { 2 public: 3 vector<int> productExceptSelf(vector<int>& nums) { 4 5 vector<int> prefix_product (nums.size()); 6 vector<int> suffix_product (nums.size()); 7 8 int prefix_prd = 1; 9 int suffix_prd = 1; 10 11 for(size_t i = 0; i < nums.size(); ++i) { 12 13 prefix_product[i] = prefix_prd; 14 15 int inv = (nums.size() - 1) - i; 16 suffix_product[inv] = suffix_prd; 17 18 if (i < nums.size()) { 19 prefix_prd *= nums[i]; 20 } 21 22 if (inv >= 0 && inv < nums.size()) { 23 suffix_prd *= nums[inv]; 24 } 25 26 27 } 28 29 vector<int> results (nums.size()); 30 for(size_t i = 0; i < nums.size(); ++i) { 31 int res = 1; 32 if(i > 0) { 33 res *= prefix_product[i]; 34 } 35 if(i + 1 < nums.size()) { 36 res *= suffix_product[i]; 37 } 38 39 results[i] = res; 40 } 41 return results; 42 } 43 };