Skip to content

Commit 9f8d737

Browse files
committed
reformatted
1 parent 4281f03 commit 9f8d737

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
TEST_OPTS=-v -cover
1+
TEST_OPTS=-v -cover -timeout 10s
22
FIND=find -maxdepth 1 -type d -regextype posix-extended -regex '^\.\/problem[0-9]{1,3}$$'
33
VET_OPTS=
44
GOFMT_OPTS=-l -s -w

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,4 @@ Number | Difficulty | Asked By
3838
[#19](problem019) | MEDIUM | Facebook
3939
[#20](problem020) | EASY | Google
4040
[#21](problem021) | EASY | Snapchat
41+
[#22](problem022) | MEDIUM | Microsoft

problem021/problem021.go

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package problem021
22

3-
import (
4-
"sort"
5-
)
3+
import "sort"
64

75
type Schedule struct {
86
startsAt int
@@ -27,18 +25,46 @@ type event struct {
2725
}
2826

2927
func Run(lectureSchedules []Schedule) int {
30-
events := make([]event, 0, len(lectureSchedules)*2)
28+
startTime := make([]int, 0, len(lectureSchedules))
29+
endTime := make([]int, 0, len(lectureSchedules))
3130
for _, lectureSchedule := range lectureSchedules {
32-
events = append(events,
33-
event{
31+
startTime = append(startTime, lectureSchedule.startsAt)
32+
endTime = append(endTime, lectureSchedule.endsAt)
33+
}
34+
sort.Ints(startTime)
35+
sort.Ints(endTime)
36+
37+
events := make([]event, 0, len(startTime)+len(endTime))
38+
for startIndex, endIndex := 0, 0; startIndex < len(startTime) || endIndex < len(endTime); {
39+
switch {
40+
case startIndex < len(startTime) && endIndex < len(endTime):
41+
if startTime[startIndex] <= endTime[endIndex] {
42+
events = append(events, event{
43+
category: START,
44+
time: startTime[startIndex],
45+
})
46+
startIndex++
47+
} else {
48+
events = append(events, event{
49+
category: END,
50+
time: endTime[endIndex],
51+
})
52+
endIndex++
53+
}
54+
case startIndex < len(startTime):
55+
events = append(events, event{
3456
category: START,
35-
time: lectureSchedule.startsAt,
36-
}, event{
57+
time: startTime[startIndex],
58+
})
59+
startIndex++
60+
case endIndex < len(endTime):
61+
events = append(events, event{
3762
category: END,
38-
time: lectureSchedule.endsAt,
63+
time: endTime[endIndex],
3964
})
65+
endIndex++
66+
}
4067
}
41-
sort.Slice(events, func(i, j int) bool { return events[i].time <= events[j].time })
4268

4369
classroomCount, maxClassroomCount := 0, 0
4470
for _, event := range events {

problem021/problem021_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import "testing"
44

55
func TestRun(t *testing.T) {
66
lectures := []Schedule{NewLecture(30, 75), NewLecture(0, 50), NewLecture(60, 150)}
7-
if Run(lectures) != 2 {
7+
result := Run(lectures)
8+
if result != 2 {
9+
t.Log(result)
810
t.FailNow()
911
}
1012
}
11-
12-
//[(30, 75), (0, 50), (60, 150)],

0 commit comments

Comments
 (0)