Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3a9a02a

Browse files
feat: add solutions to lc problem: No.1124 (doocs#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‎

Lines changed: 35 additions & 2 deletions
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‎

Lines changed: 35 additions & 2 deletions
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
### **...**
Lines changed: 15 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /