Skip to content

Commit 844c328

Browse files
committed
feat: add solutions to lc problem: No.0253,1109
1 parent fd32f5a commit 844c328

File tree

9 files changed

+257
-4
lines changed

9 files changed

+257
-4
lines changed

solution/0200-0299/0253.Meeting Rooms II/README.md

Lines changed: 72 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,97 @@
3333
<li><code>0 <= start<sub>i</sub> < end<sub>i</sub> <= 10<sup>6</sup></code></li>
3434
</ul>
3535

36-
3736
## 解法
3837

3938
<!-- 这里可写通用的实现逻辑 -->
4039

40+
差分数组。
41+
4142
<!-- tabs:start -->
4243

4344
### **Python3**
4445

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

4748
```python
48-
49+
class Solution:
50+
def minMeetingRooms(self, intervals: List[List[int]]) -> int:
51+
delta = [0] * 1000010
52+
for start, end in intervals:
53+
delta[start] += 1
54+
delta[end] -= 1
55+
for i in range(len(delta) - 1):
56+
delta[i + 1] += delta[i]
57+
return max(delta)
4958
```
5059

5160
### **Java**
5261

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

5564
```java
65+
class Solution {
66+
public int minMeetingRooms(int[][] intervals) {
67+
int n = 1000010;
68+
int[] delta = new int[n];
69+
for (int[] e : intervals) {
70+
++delta[e[0]];
71+
--delta[e[1]];
72+
}
73+
int res = delta[0];
74+
for (int i = 1; i < n; ++i) {
75+
delta[i] += delta[i - 1];
76+
res = Math.max(res, delta[i]);
77+
}
78+
return res;
79+
}
80+
}
81+
```
82+
83+
### **C++**
84+
85+
```cpp
86+
class Solution {
87+
public:
88+
int minMeetingRooms(vector<vector<int>>& intervals) {
89+
int n = 1000010;
90+
vector<int> delta(n);
91+
for (auto e : intervals) {
92+
++delta[e[0]];
93+
--delta[e[1]];
94+
}
95+
for (int i = 0; i < n - 1; ++i) {
96+
delta[i + 1] += delta[i];
97+
}
98+
return *max_element(delta.begin(), delta.end());
99+
}
100+
};
101+
```
56102
103+
### **Go**
104+
105+
```go
106+
func minMeetingRooms(intervals [][]int) int {
107+
n := 1000010
108+
delta := make([]int, n)
109+
for _, e := range intervals {
110+
delta[e[0]]++
111+
delta[e[1]]--
112+
}
113+
res := delta[0]
114+
for i := 1; i < n; i++ {
115+
delta[i] += delta[i-1]
116+
res = max(res, delta[i])
117+
}
118+
return res
119+
}
120+
121+
func max(a, b int) int {
122+
if a > b {
123+
return a
124+
}
125+
return b
126+
}
57127
```
58128

59129
### **...**

solution/0200-0299/0253.Meeting Rooms II/README_EN.md

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,89 @@
2222
<li><code>0 &lt;= start<sub>i</sub> &lt; end<sub>i</sub> &lt;= 10<sup>6</sup></code></li>
2323
</ul>
2424

25-
2625
## Solutions
2726

2827
<!-- tabs:start -->
2928

3029
### **Python3**
3130

3231
```python
33-
32+
class Solution:
33+
def minMeetingRooms(self, intervals: List[List[int]]) -> int:
34+
delta = [0] * 1000010
35+
for start, end in intervals:
36+
delta[start] += 1
37+
delta[end] -= 1
38+
for i in range(len(delta) - 1):
39+
delta[i + 1] += delta[i]
40+
return max(delta)
3441
```
3542

3643
### **Java**
3744

3845
```java
46+
class Solution {
47+
public int minMeetingRooms(int[][] intervals) {
48+
int n = 1000010;
49+
int[] delta = new int[n];
50+
for (int[] e : intervals) {
51+
++delta[e[0]];
52+
--delta[e[1]];
53+
}
54+
int res = delta[0];
55+
for (int i = 1; i < n; ++i) {
56+
delta[i] += delta[i - 1];
57+
res = Math.max(res, delta[i]);
58+
}
59+
return res;
60+
}
61+
}
62+
```
63+
64+
### **C++**
65+
66+
```cpp
67+
class Solution {
68+
public:
69+
int minMeetingRooms(vector<vector<int>>& intervals) {
70+
int n = 1000010;
71+
vector<int> delta(n);
72+
for (auto e : intervals) {
73+
++delta[e[0]];
74+
--delta[e[1]];
75+
}
76+
for (int i = 0; i < n - 1; ++i) {
77+
delta[i + 1] += delta[i];
78+
}
79+
return *max_element(delta.begin(), delta.end());
80+
}
81+
};
82+
```
3983
84+
### **Go**
85+
86+
```go
87+
func minMeetingRooms(intervals [][]int) int {
88+
n := 1000010
89+
delta := make([]int, n)
90+
for _, e := range intervals {
91+
delta[e[0]]++
92+
delta[e[1]]--
93+
}
94+
res := delta[0]
95+
for i := 1; i < n; i++ {
96+
delta[i] += delta[i-1]
97+
res = max(res, delta[i])
98+
}
99+
return res
100+
}
101+
102+
func max(a, b int) int {
103+
if a > b {
104+
return a
105+
}
106+
return b
107+
}
40108
```
41109

42110
### **...**
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int minMeetingRooms(vector<vector<int>>& intervals) {
4+
int n = 1000010;
5+
vector<int> delta(n);
6+
for (auto e : intervals) {
7+
++delta[e[0]];
8+
--delta[e[1]];
9+
}
10+
for (int i = 0; i < n - 1; ++i) {
11+
delta[i + 1] += delta[i];
12+
}
13+
return *max_element(delta.begin(), delta.end());
14+
}
15+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
func minMeetingRooms(intervals [][]int) int {
2+
n := 1000010
3+
delta := make([]int, n)
4+
for _, e := range intervals {
5+
delta[e[0]]++
6+
delta[e[1]]--
7+
}
8+
res := delta[0]
9+
for i := 1; i < n; i++ {
10+
delta[i] += delta[i-1]
11+
res = max(res, delta[i])
12+
}
13+
return res
14+
}
15+
16+
func max(a, b int) int {
17+
if a > b {
18+
return a
19+
}
20+
return b
21+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public int minMeetingRooms(int[][] intervals) {
3+
int n = 1000010;
4+
int[] delta = new int[n];
5+
for (int[] e : intervals) {
6+
++delta[e[0]];
7+
--delta[e[1]];
8+
}
9+
int res = delta[0];
10+
for (int i = 1; i < n; ++i) {
11+
delta[i] += delta[i - 1];
12+
res = Math.max(res, delta[i]);
13+
}
14+
return res;
15+
}
16+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def minMeetingRooms(self, intervals: List[List[int]]) -> int:
3+
delta = [0] * 1000010
4+
for start, end in intervals:
5+
delta[start] += 1
6+
delta[end] -= 1
7+
for i in range(len(delta) - 1):
8+
delta[i + 1] += delta[i]
9+
return max(delta)

solution/1100-1199/1109.Corporate Flight Bookings/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858

5959
<!-- 这里可写通用的实现逻辑 -->
6060

61+
差分数组。
62+
6163
<!-- tabs:start -->
6264

6365
### **Python3**
@@ -172,6 +174,25 @@ var corpFlightBookings = function(bookings, n) {
172174
};
173175
```
174176

177+
### **Go**
178+
179+
```go
180+
func corpFlightBookings(bookings [][]int, n int) []int {
181+
delta := make([]int, n)
182+
for _, booking := range bookings {
183+
first, last, seats := booking[0], booking[1], booking[2]
184+
delta[first-1] += seats
185+
if last < n {
186+
delta[last] -= seats
187+
}
188+
}
189+
for i := 0; i < n-1; i++ {
190+
delta[i+1] += delta[i]
191+
}
192+
return delta
193+
}
194+
```
195+
175196
### **...**
176197

177198
```

solution/1100-1199/1109.Corporate Flight Bookings/README_EN.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,25 @@ var corpFlightBookings = function(bookings, n) {
163163
};
164164
```
165165

166+
### **Go**
167+
168+
```go
169+
func corpFlightBookings(bookings [][]int, n int) []int {
170+
delta := make([]int, n)
171+
for _, booking := range bookings {
172+
first, last, seats := booking[0], booking[1], booking[2]
173+
delta[first-1] += seats
174+
if last < n {
175+
delta[last] -= seats
176+
}
177+
}
178+
for i := 0; i < n-1; i++ {
179+
delta[i+1] += delta[i]
180+
}
181+
return delta
182+
}
183+
```
184+
166185
### **...**
167186

168187
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func corpFlightBookings(bookings [][]int, n int) []int {
2+
delta := make([]int, n)
3+
for _, booking := range bookings {
4+
first, last, seats := booking[0], booking[1], booking[2]
5+
delta[first-1] += seats
6+
if last < n {
7+
delta[last] -= seats
8+
}
9+
}
10+
for i := 0; i < n-1; i++ {
11+
delta[i+1] += delta[i]
12+
}
13+
return delta
14+
}

0 commit comments

Comments
 (0)