Support follow & unfollow, getFollowers, getFollowings.

Have you met this question in a real interview?

Yes

Example

follow(1, 3)
getFollowers(1) // return [3]
getFollowings(3) // return [1]
follow(2, 3)
getFollowings(3) // return [1,2]
unfollow(1, 3)
getFollowings(3) // return [2]
class FriendshipService {
public:
    map<int, set<int>> follower;
    map<int, set<int>> following;
    FriendshipService() {
        // initialize your data structure here.

    }

    // @param user_id an integer
    // return all followers and sort by user_id
    vector<int>  getFollowers(int user_id) {
        // Write your code here
        return vector<int>(follower[user_id].begin(), follower[user_id].end());
    }

    // @param user_id an integer
    // return all followings and sort by user_id
    vector<int>  getFollowings(int user_id) {
        // Write your code here
        return vector<int>(following[user_id].begin(), following[user_id].end());
    }

    // @param from_user_id an integer
    // @param to_user_id an integer
    // from user_id follows to_user_id
    void follow(int from_user_id, int to_user_id) {
        // Write your code here
        follower[from_user_id].insert(to_user_id);
        following[to_user_id].insert(from_user_id);
    }

    // @param from_user_id an integer
    // @param to_user_id an integer
    // from user_id unfollows to_user_id
    void unfollow(int from_user_id, int to_user_id) {
        // Write your code here
        follower[from_user_id].erase(to_user_id);
        following[to_user_id].erase(from_user_id);
    }
};

results matching ""

    No results matching ""