Skip to content

Commit b98eb25

Browse files
authored
feat: add typescript solution to lc problem: No.1567.Maximum Length of Subarray With Positive Product (doocs#513)
1 parent fbf696d commit b98eb25

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

solution/1500-1599/1567.Maximum Length of Subarray With Positive Product/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,31 @@ class Solution {
124124
}
125125
```
126126

127+
### **TypeScript**
128+
129+
```ts
130+
function getMaxLen(nums: number[]): number {
131+
// 连续正数计数n1, 连续负数计数n2
132+
let n1 = nums[0] > 0 ? 1 : 0, n2 = nums[0] < 0 ? 1 : 0;
133+
let ans = n1;
134+
for (let i = 1; i < nums.length; ++i) {
135+
let cur = nums[i];
136+
if (cur == 0) {
137+
n1 = 0, n2 = 0;
138+
} else if (cur > 0) {
139+
++n1;
140+
n2 = n2 > 0 ? n2 + 1 : 0;
141+
} else {
142+
let t1 = n1, t2 = n2;
143+
n1 = t2 > 0 ? t2 + 1 : 0;
144+
n2 = t1 + 1;
145+
}
146+
ans = Math.max(ans, n1);
147+
}
148+
return ans;
149+
};
150+
```
151+
127152
### **C++**
128153

129154
```cpp

solution/1500-1599/1567.Maximum Length of Subarray With Positive Product/README_EN.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,31 @@ class Solution {
119119
}
120120
```
121121

122+
### **TypeScript**
123+
124+
```ts
125+
function getMaxLen(nums: number[]): number {
126+
// 连续正数计数n1, 连续负数计数n2
127+
let n1 = nums[0] > 0 ? 1 : 0, n2 = nums[0] < 0 ? 1 : 0;
128+
let ans = n1;
129+
for (let i = 1; i < nums.length; ++i) {
130+
let cur = nums[i];
131+
if (cur == 0) {
132+
n1 = 0, n2 = 0;
133+
} else if (cur > 0) {
134+
++n1;
135+
n2 = n2 > 0 ? n2 + 1 : 0;
136+
} else {
137+
let t1 = n1, t2 = n2;
138+
n1 = t2 > 0 ? t2 + 1 : 0;
139+
n2 = t1 + 1;
140+
}
141+
ans = Math.max(ans, n1);
142+
}
143+
return ans;
144+
};
145+
```
146+
122147
### **C++**
123148

124149
```cpp
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
function getMaxLen(nums: number[]): number {
2+
// 连续正数计数n1, 连续负数计数n2
3+
let n1 = nums[0] > 0 ? 1 : 0, n2 = nums[0] < 0 ? 1 : 0;
4+
let ans = n1;
5+
for (let i = 1; i < nums.length; ++i) {
6+
let cur = nums[i];
7+
if (cur == 0) {
8+
n1 = 0, n2 = 0;
9+
} else if (cur > 0) {
10+
++n1;
11+
n2 = n2 > 0 ? n2 + 1 : 0;
12+
} else {
13+
let t1 = n1, t2 = n2;
14+
n1 = t2 > 0 ? t2 + 1 : 0;
15+
n2 = t1 + 1;
16+
}
17+
ans = Math.max(ans, n1);
18+
}
19+
return ans;
20+
};

0 commit comments

Comments
 (0)