56
56
class Solution :
57
57
def productExceptSelf (self , nums : List[int ]) -> List[int ]:
58
58
n = len (nums)
59
- output = [1 for _ in nums]
59
+ ans = [1 ] * n
60
60
left = right = 1
61
61
for i in range (n):
62
- output [i] = left
62
+ ans [i] = left
63
63
left *= nums[i]
64
64
for i in range (n - 1 , - 1 , - 1 ):
65
- output [i] *= right
65
+ ans [i] *= right
66
66
right *= nums[i]
67
- return output
67
+ return ans
68
68
```
69
69
70
70
### ** Java**
@@ -75,16 +75,16 @@ class Solution:
75
75
class Solution {
76
76
public int [] productExceptSelf (int [] nums ) {
77
77
int n = nums. length;
78
- int [] output = new int [n];
78
+ int [] ans = new int [n];
79
79
for (int i = 0 , left = 1 ; i < n; ++ i) {
80
- output [i] = left;
80
+ ans [i] = left;
81
81
left *= nums[i];
82
82
}
83
83
for (int i = n - 1 , right = 1 ; i >= 0 ; -- i) {
84
- output [i] *= right;
84
+ ans [i] *= right;
85
85
right *= nums[i];
86
86
}
87
- return output ;
87
+ return ans ;
88
88
}
89
89
}
90
90
```
@@ -98,32 +98,34 @@ class Solution {
98
98
*/
99
99
var productExceptSelf = function (nums ) {
100
100
const n = nums .length ;
101
- let output = new Array (n);
101
+ let ans = new Array (n);
102
102
for (let i = 0 , left = 1 ; i < n; ++ i) {
103
- output [i] = left;
103
+ ans [i] = left;
104
104
left *= nums[i];
105
105
}
106
106
for (let i = n - 1 , right = 1 ; i >= 0 ; -- i) {
107
- output [i] *= right;
107
+ ans [i] *= right;
108
108
right *= nums[i];
109
109
}
110
- return output ;
110
+ return ans ;
111
111
};
112
112
```
113
113
114
114
### ** TypeScript**
115
115
116
116
``` ts
117
117
function productExceptSelf(nums : number []): number [] {
118
- let dpLeft = Array (nums .length ).fill (1 );
119
- let dpRight = Array (nums .length ).fill (1 );
120
- for (let i = 1 ; i < nums .length ; i ++ ) {
121
- dpLeft [i ] = dpLeft [i - 1 ] * nums [i - 1 ];
118
+ const n = nums .length ;
119
+ let ans = new Array (n );
120
+ for (let i = 0 , left = 1 ; i < n ; ++ i ) {
121
+ ans [i ] = left ;
122
+ left *= nums [i ];
122
123
}
123
- for (let i = nums .length - 2 ; i >= 0 ; i -- ) {
124
- dpRight [i ] = dpRight [i + 1 ] * nums [i + 1 ];
124
+ for (let i = n - 1 , right = 1 ; i >= 0 ; -- i ) {
125
+ ans [i ] *= right ;
126
+ right *= nums [i ];
125
127
}
126
- return dpLeft . map (( x , i ) => x * dpRight [ i ]) ;
128
+ return ans ;
127
129
}
128
130
```
129
131
@@ -167,27 +169,22 @@ func productExceptSelf(nums []int) []int {
167
169
### ** C++**
168
170
169
171
``` cpp
170
- class Solution
171
- {
172
+ class Solution {
172
173
public:
173
- vector<int > productExceptSelf(vector<int > &nums)
174
- {
175
- vector<int > dpLeft(nums.size(), 1);
176
- vector<int > dpRight(nums.size(), 1);
177
- for (int i = 1; i < nums.size(); i++)
178
- {
179
- dpLeft[ i] = dpLeft[ i - 1] * nums[ i - 1] ;
180
- }
181
- for (int i = nums.size() - 2; i >= 0; i--)
174
+ vector<int > productExceptSelf(vector<int >& nums) {
175
+ int n = nums.size();
176
+ vector<int > ans(n);
177
+ for (int i = 0, left = 1; i < n; ++i)
182
178
{
183
- dpRight[ i] = dpRight[ i + 1] * nums[ i + 1] ;
179
+ ans[ i] = left;
180
+ left * = nums[ i] ;
184
181
}
185
- vector<int > result;
186
- for (int i = 0; i < nums.size(); i++)
182
+ for (int i = n - 1, right = 1; i >= 0; --i)
187
183
{
188
- result.push_back(dpLeft[ i] * dpRight[ i] );
184
+ ans[ i] * = right;
185
+ right * = nums[ i] ;
189
186
}
190
- return result ;
187
+ return ans ;
191
188
}
192
189
};
193
190
```
0 commit comments