-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathLeetCodeProduct of Array Except Self.cpp
More file actions
63 lines (46 loc) · 1.33 KB
/
LeetCodeProduct of Array Except Self.cpp
File metadata and controls
63 lines (46 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*********APPROACH 1***********/
//Space - O(1)
//Time- O(n)
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int size= nums.size();
//Initially output vector will calculate the left product
vector<int> output(size);
output[0]= 1;
for(int i=1; i<size; ++i){
output[i]= nums[i-1]*output[i-1];
}
int right= 1;
for(int i=size-1; i>=0; --i){
output[i]= output[i]*right;
right= right*nums[i];
}
return output;
}
/*********APPROACH 2***********/
//Space - O(n)
//Time- O(n)
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int size= nums.size();
vector<int> ans(size);
//array to store the product of all eleements left to it
vector<int> left(size);
left[0]= 1;
for(int i=1; i<size; ++i){
left[i]= nums[i-1]*left[i-1];
}
//array to store teh product of all eleements right to it
vector<int> right(size);
right[size-1]= 1;
for(int i=size-2; i>=0; --i){
right[i]= nums[i+1]*right[i+1];
}
for(int i=0; i<size; ++i){
ans[i]= left[i]*right[i];
}
return ans;
}
};