Skip to content

Commit 71de320

Browse files
committed
Refactor Code Style
1 parent 6402e08 commit 71de320

File tree

2 files changed

+17
-29
lines changed

2 files changed

+17
-29
lines changed

Graph/CourseSchedule.swift

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,32 @@
88

99
class CourseSchedule {
1010
func canFinish(_ numCourses: Int, _ prerequisites: [[Int]]) -> Bool {
11-
var inDegrees = Array(repeating: 0, count: numCourses), fromTo = [Int: [Int]]()
12-
var coursesCouldTake = [Int](), queue = [Int]()
11+
var inDegrees = Array(repeating: 0, count: numCourses), toCourses = [Int: [Int]]()
1312

14-
// init graph
15-
for prerequisite in prerequisites {
16-
fromTo[prerequisite[1], default: []].append(prerequisite[0])
17-
inDegrees[prerequisite[0]] += 1
13+
for courses in prerequisites {
14+
inDegrees[courses[0]] += 1
15+
toCourses[courses[1], default:[]].append(courses[0])
1816
}
1917

20-
// BFS
21-
for course in 0..<numCourses {
22-
if inDegrees[course] == 0 {
23-
queue.append(course)
24-
}
25-
}
18+
var queue = (0..<numCourses).filter { inDegrees[$0] == 0 }, validCourseCount = 0
2619

2720
while !queue.isEmpty {
28-
let currentCourse = queue.removeFirst()
29-
coursesCouldTake.append(currentCourse)
21+
let course = queue.removeFirst()
3022

31-
guard let toCourses = fromTo[currentCourse] else {
23+
validCourseCount += 1
24+
25+
guard let toCourses = toCourses[course] else {
3226
continue
3327
}
3428

35-
toCourses.forEach {
36-
inDegrees[$0] -= 1
37-
38-
if inDegrees[$0] == 0 {
39-
queue.append($0)
29+
for toCourse in toCourses {
30+
inDegrees[toCourse] -= 1
31+
if inDegrees[toCourse] == 0 {
32+
queue.append(toCourse)
4033
}
4134
}
4235
}
43-
44-
return coursesCouldTake.count == numCourses
36+
37+
return validCourseCount == numCourses
4538
}
4639
}

Graph/CourseScheduleII.swift

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,15 @@
99
class CourseScheduleII {
1010
func findOrder(_ numCourses: Int, _ prerequisites: [[Int]]) -> [Int] {
1111
var inDegrees = Array(repeating: 0, count: numCourses), fromTo = [Int: [Int]]()
12-
var coursesCouldTake = [Int](), queue = [Int]()
12+
var coursesCouldTake = [Int]()
1313

1414
// init graph
1515
for prerequisite in prerequisites {
1616
fromTo[prerequisite[1], default: []].append(prerequisite[0])
1717
inDegrees[prerequisite[0]] += 1
1818
}
1919

20-
// BFS
21-
for course in 0..<numCourses {
22-
if inDegrees[course] == 0 {
23-
queue.append(course)
24-
}
25-
}
20+
var queue = (0..<numCourses).filter { inDegrees[$0] == 0 }
2621

2722
while !queue.isEmpty {
2823
let currentCourse = queue.removeFirst()

0 commit comments

Comments
 (0)