Skip to content

Commit 8a9e25e

Browse files
committed
feat: add solutions to lc problem: No.3511
No.3511.Make a Positive Array
1 parent b0ca983 commit 8a9e25e

File tree

7 files changed

+260
-6
lines changed

7 files changed

+260
-6
lines changed

solution/3500-3599/3511.Make a Positive Array/README.md

+88-3
Original file line numberDiff line numberDiff line change
@@ -119,25 +119,110 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3500-3599/3511.Ma
119119
#### Python3
120120

121121
```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
123135
```
124136

125137
#### Java
126138

127139
```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+
}
129158
```
130159

131160
#### C++
132161

133162
```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+
};
135182
```
136183
137184
#### Go
138185
139186
```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+
```
140205

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+
}
141226
```
142227

143228
<!-- tabs:end -->

solution/3500-3599/3511.Make a Positive Array/README_EN.md

+88-3
Original file line numberDiff line numberDiff line change
@@ -117,25 +117,110 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3500-3599/3511.Ma
117117
#### Python3
118118

119119
```python
120-
120+
class Solution:
121+
def makeArrayPositive(self, nums: List[int]) -> int:
122+
l = -1
123+
ans = pre_mx = s = 0
124+
for r, x in enumerate(nums):
125+
s += x
126+
if r - l > 2 and s <= pre_mx:
127+
ans += 1
128+
l = r
129+
pre_mx = s = 0
130+
elif r - l >= 2:
131+
pre_mx = max(pre_mx, s - x - nums[r - 1])
132+
return ans
121133
```
122134

123135
#### Java
124136

125137
```java
126-
138+
class Solution {
139+
public int makeArrayPositive(int[] nums) {
140+
int ans = 0;
141+
long preMx = 0, s = 0;
142+
for (int l = -1, r = 0; r < nums.length; r++) {
143+
int x = nums[r];
144+
s += x;
145+
if (r - l > 2 && s <= preMx) {
146+
ans++;
147+
l = r;
148+
preMx = s = 0;
149+
} else if (r - l >= 2) {
150+
preMx = Math.max(preMx, s - x - nums[r - 1]);
151+
}
152+
}
153+
return ans;
154+
}
155+
}
127156
```
128157

129158
#### C++
130159

131160
```cpp
132-
161+
class Solution {
162+
public:
163+
int makeArrayPositive(vector<int>& nums) {
164+
int ans = 0;
165+
long long preMx = 0, s = 0;
166+
for (int l = -1, r = 0; r < nums.size(); r++) {
167+
int x = nums[r];
168+
s += x;
169+
if (r - l > 2 && s <= preMx) {
170+
ans++;
171+
l = r;
172+
preMx = s = 0;
173+
} else if (r - l >= 2) {
174+
preMx = max(preMx, s - x - nums[r - 1]);
175+
}
176+
}
177+
return ans;
178+
}
179+
};
133180
```
134181
135182
#### Go
136183
137184
```go
185+
func makeArrayPositive(nums []int) (ans int) {
186+
l := -1
187+
preMx := 0
188+
s := 0
189+
for r, x := range nums {
190+
s += x
191+
if r-l > 2 && s <= preMx {
192+
ans++
193+
l = r
194+
preMx = 0
195+
s = 0
196+
} else if r-l >= 2 {
197+
preMx = max(preMx, s-x-nums[r-1])
198+
}
199+
}
200+
return
201+
}
202+
```
138203

204+
#### TypeScript
205+
206+
```ts
207+
function makeArrayPositive(nums: number[]): number {
208+
let l = -1;
209+
let [ans, preMx, s] = [0, 0, 0];
210+
for (let r = 0; r < nums.length; r++) {
211+
const x = nums[r];
212+
s += x;
213+
if (r - l > 2 && s <= preMx) {
214+
ans++;
215+
l = r;
216+
preMx = 0;
217+
s = 0;
218+
} else if (r - l >= 2) {
219+
preMx = Math.max(preMx, s - x - nums[r - 1]);
220+
}
221+
}
222+
return ans;
223+
}
139224
```
140225

141226
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public:
3+
int makeArrayPositive(vector<int>& nums) {
4+
int ans = 0;
5+
long long preMx = 0, s = 0;
6+
for (int l = -1, r = 0; r < nums.size(); r++) {
7+
int x = nums[r];
8+
s += x;
9+
if (r - l > 2 && s <= preMx) {
10+
ans++;
11+
l = r;
12+
preMx = s = 0;
13+
} else if (r - l >= 2) {
14+
preMx = max(preMx, s - x - nums[r - 1]);
15+
}
16+
}
17+
return ans;
18+
}
19+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
func makeArrayPositive(nums []int) (ans int) {
2+
l := -1
3+
preMx := 0
4+
s := 0
5+
for r, x := range nums {
6+
s += x
7+
if r-l > 2 && s <= preMx {
8+
ans++
9+
l = r
10+
preMx = 0
11+
s = 0
12+
} else if r-l >= 2 {
13+
preMx = max(preMx, s-x-nums[r-1])
14+
}
15+
}
16+
return
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int makeArrayPositive(int[] nums) {
3+
int ans = 0;
4+
long preMx = 0, s = 0;
5+
for (int l = -1, r = 0; r < nums.length; r++) {
6+
int x = nums[r];
7+
s += x;
8+
if (r - l > 2 && s <= preMx) {
9+
ans++;
10+
l = r;
11+
preMx = s = 0;
12+
} else if (r - l >= 2) {
13+
preMx = Math.max(preMx, s - x - nums[r - 1]);
14+
}
15+
}
16+
return ans;
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def makeArrayPositive(self, nums: List[int]) -> int:
3+
l = -1
4+
ans = pre_mx = s = 0
5+
for r, x in enumerate(nums):
6+
s += x
7+
if r - l > 2 and s <= pre_mx:
8+
ans += 1
9+
l = r
10+
pre_mx = s = 0
11+
elif r - l >= 2:
12+
pre_mx = max(pre_mx, s - x - nums[r - 1])
13+
return ans
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function makeArrayPositive(nums: number[]): number {
2+
let l = -1;
3+
let [ans, preMx, s] = [0, 0, 0];
4+
for (let r = 0; r < nums.length; r++) {
5+
const x = nums[r];
6+
s += x;
7+
if (r - l > 2 && s <= preMx) {
8+
ans++;
9+
l = r;
10+
preMx = 0;
11+
s = 0;
12+
} else if (r - l >= 2) {
13+
preMx = Math.max(preMx, s - x - nums[r - 1]);
14+
}
15+
}
16+
return ans;
17+
}

0 commit comments

Comments
 (0)