Friend Requests II Who Has the Most Friends LeetCode Solution

Last updated on January 21st, 2025 at 03:43 am

Here, we see a Friend Requests II Who Has the Most Friends LeetCode Solution. This Leetcode problem is solved using MySQL and Pandas.

List of all LeetCode Solution

Companies

Facebook

Level of Question

Medium

Friend Requests II: Who Has the Most Friends LeetCode Solution

Friend Requests II Who Has the Most Friends LeetCode Solution

1. Problem Statement

Column NameType
requester_idint
accepter_idint
accept_datedate
Table: RequestAccepted

(requester_id, accepter_id) is the primary key (combination of columns with unique values) for this table. This table contains the ID of the user who sent the request, the ID of the user who received the request, and the date when the request was accepted.

Write a solution to find the people who have the most friends and the most friends number.

The test cases are generated so that only one person has the most friends.

The result format is in the following example.

Example 1:
Input:

requester_id accepter_id accept_date
122016/06/03
132016/06/08
232016/06/08
342016/06/09
RequestAccepted table

Output:

id num
33

Explanation: The person with id 3 is a friend of people 1, 2, and 4, so he has three friends in total, which is the most number than any others.

2. Code Implementation in Different Languages

2.1 Friend Requests II: Who Has the Most Friends MySQL

with base as(
  select 
    requester_id id 
  from 
    RequestAccepted 
  union all 
  select 
    accepter_id id 
  from 
    RequestAccepted
) 
select 
  id, 
  count(*) num 
from 
  base 
group by 
  1 
order by 
  2 desc 
limit 
  1

2.2 Friend Requests II: Who Has the Most Friends Pandas

import pandas as pd
def most_friends(request_accepted: pd.DataFrame) -> pd.DataFrame:
    req = request_accepted.requester_id.value_counts().reset_index().rename(columns ={'requester_id':'id'})
    acc = request_accepted.accepter_id.value_counts().reset_index().rename(columns ={'accepter_id':'id'})
    df = req.merge(acc, on ='id', how ='outer', suffixes=('_req','_acc')).fillna(0)
    return df.assign(num = df.count_req + df.count_acc)[['id','num']].query('num == num.max()')

Scroll to Top