Skip to content

Commit 89df97f

Browse files
committed
feat: add solutions to lc problem: No.0252
No.0252.Meeting Rooms
1 parent 7675a46 commit 89df97f

File tree

7 files changed

+167
-24
lines changed

7 files changed

+167
-24
lines changed

solution/0200-0299/0252.Meeting Rooms/README.md

+66-8
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@
3838

3939
<!-- 这里可写通用的实现逻辑 -->
4040

41+
**方法一:排序**
42+
43+
我们将会议按照开始时间进行排序,然后遍历排序后的会议,如果当前会议的开始时间小于前一个会议的结束时间,则说明两个会议有重叠,返回 `false` 即可。
44+
45+
遍历结束后,返回 `true`
46+
47+
时间复杂度 $O(n \times \log n)$,空间复杂度 $O(\log n)$。其中 $n$ 为会议数量。
48+
4149
<!-- tabs:start -->
4250

4351
### **Python3**
@@ -47,11 +55,8 @@
4755
```python
4856
class Solution:
4957
def canAttendMeetings(self, intervals: List[List[int]]) -> bool:
50-
intervals.sort(key=lambda x: x[0])
51-
for i in range(len(intervals) - 1):
52-
if intervals[i][1] > intervals[i + 1][0]:
53-
return False
54-
return True
58+
intervals.sort()
59+
return all(a[1] <= b[0] for a, b in pairwise(intervals))
5560
```
5661

5762
### **Java**
@@ -61,12 +66,65 @@ class Solution:
6166
```java
6267
class Solution {
6368
public boolean canAttendMeetings(int[][] intervals) {
64-
Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));
65-
for (int i = 0, n = intervals.length; i < n - 1; ++i) {
66-
if (intervals[i][1] > intervals[i + 1][0]) return false;
69+
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
70+
for (int i = 1; i < intervals.length; ++i) {
71+
var a = intervals[i - 1];
72+
var b = intervals[i];
73+
if (a[1] > b[0]) {
74+
return false;
75+
}
76+
}
77+
return true;
78+
}
79+
}
80+
```
81+
82+
### **C++**
83+
84+
```cpp
85+
class Solution {
86+
public:
87+
bool canAttendMeetings(vector<vector<int>>& intervals) {
88+
sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
89+
return a[0] < b[0];
90+
});
91+
for (int i = 1; i < intervals.size(); ++i) {
92+
if (intervals[i][0] < intervals[i - 1][1]) {
93+
return false;
94+
}
6795
}
6896
return true;
6997
}
98+
};
99+
```
100+
101+
### **Go**
102+
103+
```go
104+
func canAttendMeetings(intervals [][]int) bool {
105+
sort.Slice(intervals, func(i, j int) bool {
106+
return intervals[i][0] < intervals[j][0]
107+
})
108+
for i := 1; i < len(intervals); i++ {
109+
if intervals[i][0] < intervals[i-1][1] {
110+
return false
111+
}
112+
}
113+
return true
114+
}
115+
```
116+
117+
### **TypeScript**
118+
119+
```ts
120+
function canAttendMeetings(intervals: number[][]): boolean {
121+
intervals.sort((a, b) => a[0] - b[0]);
122+
for (let i = 1; i < intervals.length; ++i) {
123+
if (intervals[i][0] < intervals[i - 1][1]) {
124+
return false;
125+
}
126+
}
127+
return true;
70128
}
71129
```
72130

solution/0200-0299/0252.Meeting Rooms/README_EN.md

+58-8
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,77 @@
3232
```python
3333
class Solution:
3434
def canAttendMeetings(self, intervals: List[List[int]]) -> bool:
35-
intervals.sort(key=lambda x: x[0])
36-
for i in range(len(intervals) - 1):
37-
if intervals[i][1] > intervals[i + 1][0]:
38-
return False
39-
return True
35+
intervals.sort()
36+
return all(a[1] <= b[0] for a, b in pairwise(intervals))
4037
```
4138

4239
### **Java**
4340

4441
```java
4542
class Solution {
4643
public boolean canAttendMeetings(int[][] intervals) {
47-
Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));
48-
for (int i = 0, n = intervals.length; i < n - 1; ++i) {
49-
if (intervals[i][1] > intervals[i + 1][0]) return false;
44+
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
45+
for (int i = 1; i < intervals.length; ++i) {
46+
var a = intervals[i - 1];
47+
var b = intervals[i];
48+
if (a[1] > b[0]) {
49+
return false;
50+
}
5051
}
5152
return true;
5253
}
5354
}
5455
```
5556

57+
### **C++**
58+
59+
```cpp
60+
class Solution {
61+
public:
62+
bool canAttendMeetings(vector<vector<int>>& intervals) {
63+
sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
64+
return a[0] < b[0];
65+
});
66+
for (int i = 1; i < intervals.size(); ++i) {
67+
if (intervals[i][0] < intervals[i - 1][1]) {
68+
return false;
69+
}
70+
}
71+
return true;
72+
}
73+
};
74+
```
75+
76+
### **Go**
77+
78+
```go
79+
func canAttendMeetings(intervals [][]int) bool {
80+
sort.Slice(intervals, func(i, j int) bool {
81+
return intervals[i][0] < intervals[j][0]
82+
})
83+
for i := 1; i < len(intervals); i++ {
84+
if intervals[i][0] < intervals[i-1][1] {
85+
return false
86+
}
87+
}
88+
return true
89+
}
90+
```
91+
92+
### **TypeScript**
93+
94+
```ts
95+
function canAttendMeetings(intervals: number[][]): boolean {
96+
intervals.sort((a, b) => a[0] - b[0]);
97+
for (let i = 1; i < intervals.length; ++i) {
98+
if (intervals[i][0] < intervals[i - 1][1]) {
99+
return false;
100+
}
101+
}
102+
return true;
103+
}
104+
```
105+
56106
### **...**
57107

58108
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
bool canAttendMeetings(vector<vector<int>>& intervals) {
4+
sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
5+
return a[0] < b[0];
6+
});
7+
for (int i = 1; i < intervals.size(); ++i) {
8+
if (intervals[i][0] < intervals[i - 1][1]) {
9+
return false;
10+
}
11+
}
12+
return true;
13+
}
14+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
func canAttendMeetings(intervals [][]int) bool {
2+
sort.Slice(intervals, func(i, j int) bool {
3+
return intervals[i][0] < intervals[j][0]
4+
})
5+
for i := 1; i < len(intervals); i++ {
6+
if intervals[i][0] < intervals[i-1][1] {
7+
return false
8+
}
9+
}
10+
return true
11+
}

solution/0200-0299/0252.Meeting Rooms/Solution.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
class Solution {
22
public boolean canAttendMeetings(int[][] intervals) {
3-
Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));
4-
for (int i = 0, n = intervals.length; i < n - 1; ++i) {
5-
if (intervals[i][1] > intervals[i + 1][0]) return false;
3+
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
4+
for (int i = 1; i < intervals.length; ++i) {
5+
var a = intervals[i - 1];
6+
var b = intervals[i];
7+
if (a[1] > b[0]) {
8+
return false;
9+
}
610
}
711
return true;
812
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
class Solution:
22
def canAttendMeetings(self, intervals: List[List[int]]) -> bool:
3-
intervals.sort(key=lambda x: x[0])
4-
for i in range(len(intervals) - 1):
5-
if intervals[i][1] > intervals[i + 1][0]:
6-
return False
7-
return True
3+
intervals.sort()
4+
return all(a[1] <= b[0] for a, b in pairwise(intervals))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function canAttendMeetings(intervals: number[][]): boolean {
2+
intervals.sort((a, b) => a[0] - b[0]);
3+
for (let i = 1; i < intervals.length; ++i) {
4+
if (intervals[i][0] < intervals[i - 1][1]) {
5+
return false;
6+
}
7+
}
8+
return true;
9+
}

0 commit comments

Comments
 (0)