Untitled

 avatar
unknown
plain_text
a year ago
1.1 kB
10
Indexable
def getRecommendedFriends(n, friendships):
    adj = [set() for _ in range(n)]
    for i, j in friendships:
        adj[i].add(j)
        adj[j].add(i)
    common = [{} for _ in range(n)]
    for u1, u2 in friendships:
        # u2 is the common friend
        for u3 in adj[u2]:
            if u3 != u1 and u3 not in adj[u1]:
                if u3 not in common[u1]:
                    common[u1][u3] = 0
                common[u1][u3] += 1
        # u1 is the common friend
        for u3 in adj[u1]:
            if u3 != u2 and u3 not in adj[u2]:
                if u3 not in common[u2]:
                    common[u2][u3] = 0
                common[u2][u3] += 1
    res = [-1] * n
    for i in range(n):
        # Nobody has common friend with user i.
        if len(common[i]) == 0:
            for j in range(n):
                if j not in adj[i] and j != i:
                    res[i] = j
                    break
        else:
            c = -1
            for user, num in common[i].items():
                if c < num or (c == num and user < res[i]):
                    res[i] = user
                    c = num
    return res
Editor is loading...
Leave a Comment