Skip to main content
Back to problems
#574
Medium Database

Winning candidate

Database
62.6% acceptance
Mar 31, 2026
184
414

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: Candidate
# 
# +-------------+----------+
# | Column Name | Type     |
# +-------------+----------+
# | id          | int      |
# | name        | varchar  |
# +-------------+----------+
# id is the column with unique values for this table.
# Each row of this table contains information about the id and the name of a candidate.
# 
#  
# 
# Table: Vote
# 
# +-------------+------+
# | Column Name | Type |
# +-------------+------+
# | id          | int  |
# | candidateId | int  |
# +-------------+------+
# id is an auto-increment primary key (column with unique values).
# candidateId is a foreign key (reference column) to id from the Candidate table.
# Each row of this table determines the candidate who got the ith vote in the elections.
# 
#  
# 
# Write a solution to report the name of the winning candidate (i.e., the candidate who got the largest number of votes).
# 
# The test cases are generated so that exactly one candidate wins the elections.
# 
# The result format is in the following example.
#
# Example 1:
# Input:
# Candidate table:
# +----+------+
# | id | name |
# +----+------+
# | 1  | A    |
# | 2  | B    |
# | 3  | C    |
# | 4  | D    |
# | 5  | E    |
# +----+------+
# Vote table:
# +----+-------------+
# | id | candidateId |
# +----+-------------+
# | 1  | 2           |
# | 2  | 4           |
# | 3  | 3           |
# | 4  | 2           |
# | 5  | 5           |
# +----+-------------+
# Output:
# +------+
# | name |
# +------+
# | B    |
# +------+
# Explanation:
# Candidate B has 2 votes. Candidates C, D, and E have 1 vote each.
# The winner is candidate B.

import pandas as pd

def winning_candidate(candidate: pd.DataFrame, vote: pd.DataFrame) -> pd.DataFrame:
  winner_id = vote['candidateId'].value_counts().idxmax()
  return candidate[candidate['id'] == winner_id][['name']]