Skip to content

Commit 2acecb0

Browse files
committed
Add medium problems
1 parent 1e79e75 commit 2acecb0

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

Medium/degrees-of-separation.py

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
2+
# DEGREES OF SEPARATION
3+
4+
# O(V + E) time, O(V) space
5+
def degreesOfSeparation(friendsLists, personOne, personTwo):
6+
# Write your code here.
7+
degrees, visited = {}, {}
8+
findDegrees(friendsLists, personOne, degrees, visited, 0)
9+
getUnconnectedPeople(friendsLists, degrees)
10+
countOne = 0
11+
for person in degrees:
12+
if degrees[person] > 6:
13+
countOne += 1
14+
15+
print(degrees)
16+
degrees, visited = {}, {}
17+
findDegrees(friendsLists, personTwo, degrees, visited, 0)
18+
getUnconnectedPeople(friendsLists, degrees)
19+
countTwo = 0
20+
for person in degrees:
21+
if degrees[person] > 6:
22+
countTwo += 1
23+
print(degrees)
24+
if countOne < countTwo:
25+
return personOne
26+
elif countTwo < countOne:
27+
return personTwo
28+
else:
29+
return ""
30+
31+
def findDegrees(friendsLists, person, degrees, visited, level):
32+
degrees[person] = 0
33+
queue = [(person, 0)]
34+
#visited = {person: True}
35+
while queue:
36+
current = queue.pop(0)
37+
#visited[current[0]] = True
38+
level = current[1]
39+
for friend in friendsLists[current[0]]:
40+
if friend in visited:
41+
continue
42+
visited[friend] = True
43+
degrees[friend] = level + 1
44+
queue.append((friend, level + 1))
45+
46+
47+
def getUnconnectedPeople(friendsLists, degrees):
48+
for friend in friendsLists:
49+
if friend not in degrees:
50+
degrees[friend] = float("inf")

0 commit comments

Comments
 (0)