Friend Requests II: Who Has the Most Friends LeetCode Solution

Last updated on October 5th, 2024 at 04:21 pm

Here, We see Friend Requests II: Who Has the Most Friends LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.

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

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.

1. Friend Requests II: Who Has the Most Friends LeetCode Solution 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. Friend Requests II: Who Has the Most Friends LeetCode Solution 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