50. Product of Array Exclude Itself
Description:
Given an integers array A.
Define B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], calculate B WITHOUT divide operation.Out put B
Example
Example 1
Input: A = [1, 2, 3]
Output: [6, 3, 2]
Explanation:B[0] = A[1] * A[2] = 6; B[1] = A[0] * A[2] = 3; B[2] = A[0] * A[1] = 2
Example 2
Input: A = [2, 4, 6]
Output: [24, 12, 8]
Main Idea:
Integer Array Problem. As the problem required not to use divide operation, then we will use O(n^2) method. For the first loop i from 0 to n, in second for-loop, multiple **nums[j]**s if i != j.
Time/Space Cost:
Time Cost: O ( n 2 ) \ O(n^2) O(n2)
Code:
class Solution {
public:
/*
* @param nums: Given an integers array A
* @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1]
*/
vector<long long> productExcludeItself(vector<int> &nums) {
// write your code here
if(nums.empty()) return vector<long long>();
int n = nums.size();
vector<long long> res(n);
for(int i = 0; i < n; i++){
res[i] = 1;
for(int j = 0; j < n; j++){
if(i != j)
res[i] *= nums[j];
}
}
return res;
}
};