Skip to content

Commit 3a9a02a

Browse files
authored
feat: add solutions to lc problem: No.1124 (#608)
1124.Longest Well-Performing Interval
1 parent e390c02 commit 3a9a02a

File tree

3 files changed

+85
-4
lines changed

3 files changed

+85
-4
lines changed

solution/1100-1199/1124.Longest Well-Performing Interval/README.md

+35-2
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,48 @@
4343
<!-- 这里可写当前语言的特殊实现逻辑 -->
4444

4545
```python
46-
46+
class Solution:
47+
def longestWPI(self, hours: List[int]) -> int:
48+
pre_sum, res = 0, 0
49+
mp = {}
50+
for i in range(len(hours)):
51+
temp = 1 if hours[i] > 8 else -1
52+
pre_sum += temp
53+
if pre_sum > 0:
54+
res = i + 1
55+
else:
56+
if pre_sum not in mp:
57+
mp[pre_sum] = i
58+
if (pre_sum - 1) in mp:
59+
res = max(res, i - mp[pre_sum - 1])
60+
return res
4761
```
4862

4963
### **Java**
5064

5165
<!-- 这里可写当前语言的特殊实现逻辑 -->
5266

5367
```java
54-
68+
class Solution {
69+
public int longestWPI(int[] hours) {
70+
int res = 0;
71+
Map<Integer, Integer> map = new HashMap<>();
72+
int s = 0;
73+
for (int i = 0; i < hours.length; ++i) {
74+
s += hours[i] > 8 ? 1 : -1;
75+
if (s > 0) {
76+
res = i + 1;
77+
} else {
78+
int b = map.getOrDefault(s - 1, -1);
79+
if (b != -1) {
80+
res = Math.max(res, i - b);
81+
}
82+
}
83+
map.putIfAbsent(s, i);
84+
}
85+
return res;
86+
}
87+
}
5588
```
5689

5790
### **...**

solution/1100-1199/1124.Longest Well-Performing Interval/README_EN.md

+35-2
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,46 @@
3737
### **Python3**
3838

3939
```python
40-
40+
class Solution:
41+
def longestWPI(self, hours: List[int]) -> int:
42+
pre_sum, res = 0, 0
43+
mp = {}
44+
for i in range(len(hours)):
45+
temp = 1 if hours[i] > 8 else -1
46+
pre_sum += temp
47+
if pre_sum > 0:
48+
res = i + 1
49+
else:
50+
if pre_sum not in mp:
51+
mp[pre_sum] = i
52+
if (pre_sum - 1) in mp:
53+
res = max(res, i - mp[pre_sum - 1])
54+
return res
4155
```
4256

4357
### **Java**
4458

4559
```java
46-
60+
class Solution {
61+
public int longestWPI(int[] hours) {
62+
int res = 0;
63+
Map<Integer, Integer> map = new HashMap<>();
64+
int s = 0;
65+
for (int i = 0; i < hours.length; ++i) {
66+
s += hours[i] > 8 ? 1 : -1;
67+
if (s > 0) {
68+
res = i + 1;
69+
} else {
70+
int b = map.getOrDefault(s - 1, -1);
71+
if (b != -1) {
72+
res = Math.max(res, i - b);
73+
}
74+
}
75+
map.putIfAbsent(s, i);
76+
}
77+
return res;
78+
}
79+
}
4780
```
4881

4982
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def longestWPI(self, hours: List[int]) -> int:
3+
pre_sum, res = 0, 0
4+
mp = {}
5+
for i in range(len(hours)):
6+
temp = 1 if hours[i] > 8 else -1
7+
pre_sum += temp
8+
if pre_sum > 0:
9+
res = i + 1
10+
else:
11+
if pre_sum not in mp:
12+
mp[pre_sum] = i
13+
if (pre_sum - 1) in mp:
14+
res = max(res, i - mp[pre_sum - 1])
15+
return res

0 commit comments

Comments
 (0)