@@ -119,25 +119,110 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3500-3599/3511.Ma
119
119
#### Python3
120
120
121
121
``` python
122
-
122
+ class Solution :
123
+ def makeArrayPositive (self , nums : List[int ]) -> int :
124
+ l = - 1
125
+ ans = pre_mx = s = 0
126
+ for r, x in enumerate (nums):
127
+ s += x
128
+ if r - l > 2 and s <= pre_mx:
129
+ ans += 1
130
+ l = r
131
+ pre_mx = s = 0
132
+ elif r - l >= 2 :
133
+ pre_mx = max (pre_mx, s - x - nums[r - 1 ])
134
+ return ans
123
135
```
124
136
125
137
#### Java
126
138
127
139
``` java
128
-
140
+ class Solution {
141
+ public int makeArrayPositive (int [] nums ) {
142
+ int ans = 0 ;
143
+ long preMx = 0 , s = 0 ;
144
+ for (int l = - 1 , r = 0 ; r < nums. length; r++ ) {
145
+ int x = nums[r];
146
+ s += x;
147
+ if (r - l > 2 && s <= preMx) {
148
+ ans++ ;
149
+ l = r;
150
+ preMx = s = 0 ;
151
+ } else if (r - l >= 2 ) {
152
+ preMx = Math . max(preMx, s - x - nums[r - 1 ]);
153
+ }
154
+ }
155
+ return ans;
156
+ }
157
+ }
129
158
```
130
159
131
160
#### C++
132
161
133
162
``` cpp
134
-
163
+ class Solution {
164
+ public:
165
+ int makeArrayPositive(vector<int >& nums) {
166
+ int ans = 0;
167
+ long long preMx = 0, s = 0;
168
+ for (int l = -1, r = 0; r < nums.size(); r++) {
169
+ int x = nums[ r] ;
170
+ s += x;
171
+ if (r - l > 2 && s <= preMx) {
172
+ ans++;
173
+ l = r;
174
+ preMx = s = 0;
175
+ } else if (r - l >= 2) {
176
+ preMx = max(preMx, s - x - nums[ r - 1] );
177
+ }
178
+ }
179
+ return ans;
180
+ }
181
+ };
135
182
```
136
183
137
184
#### Go
138
185
139
186
```go
187
+ func makeArrayPositive(nums []int) (ans int) {
188
+ l := -1
189
+ preMx := 0
190
+ s := 0
191
+ for r, x := range nums {
192
+ s += x
193
+ if r-l > 2 && s <= preMx {
194
+ ans++
195
+ l = r
196
+ preMx = 0
197
+ s = 0
198
+ } else if r-l >= 2 {
199
+ preMx = max(preMx, s-x-nums[r-1])
200
+ }
201
+ }
202
+ return
203
+ }
204
+ ```
140
205
206
+ #### TypeScript
207
+
208
+ ``` ts
209
+ function makeArrayPositive(nums : number []): number {
210
+ let l = - 1 ;
211
+ let [ans, preMx, s] = [0 , 0 , 0 ];
212
+ for (let r = 0 ; r < nums .length ; r ++ ) {
213
+ const x = nums [r ];
214
+ s += x ;
215
+ if (r - l > 2 && s <= preMx ) {
216
+ ans ++ ;
217
+ l = r ;
218
+ preMx = 0 ;
219
+ s = 0 ;
220
+ } else if (r - l >= 2 ) {
221
+ preMx = Math .max (preMx , s - x - nums [r - 1 ]);
222
+ }
223
+ }
224
+ return ans ;
225
+ }
141
226
```
142
227
143
228
<!-- tabs: end -->
0 commit comments