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 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‎

Lines changed: 66 additions & 8 deletions
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‎

Lines changed: 58 additions & 8 deletions
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
```
Lines changed: 14 additions & 0 deletions
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+
};
Lines changed: 11 additions & 0 deletions
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‎

Lines changed: 7 additions & 3 deletions
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
}
Lines changed: 2 additions & 5 deletions
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))
Lines changed: 9 additions & 0 deletions
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)

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