Skip to main content
Back to problems
#2118
Hard Database

Build the equation

Database
57.0% acceptance
Mar 31, 2026
24
38

No description available.

Solution

Pandas
Time O(n)
Space O(1)
LeetCode
solution.pandas
# Table: Terms
# 
# +-------------+------+
# | Column Name | Type |
# +-------------+------+
# | power       | int  |
# | factor      | int  |
# +-------------+------+
# power is the column with unique values for this table.
# Each row of this table contains information about one term of the equation.
# power is an integer in the range [0, 100].
# factor is an integer in the range [-100, 100] and cannot be zero.
# 
#  
# 
# You have a very powerful program that can solve any equation of one variable in the world. The equation passed to the program must be formatted as follows:
# 
# The left-hand side (LHS) should contain all the terms.
# 
# The right-hand side (RHS) should be zero.
# 
# Each term of the LHS should follow the format "<sign><fact>X^<pow>" where:
# 
# <sign> is either "+" or "-".
# 
# <fact> is the absolute value of the factor.
# 
# <pow> is the value of the power.
# 
# If the power is 1, do not add "^<pow>".
# 
# For example, if power = 1 and factor = 3, the term will be "+3X".
# 
# If the power is 0, add neither "X" nor "^<pow>".
# 
# For example, if power = 0 and factor = -3, the term will be "-3".
# 
# The powers in the LHS should be sorted in descending order.
# 
# Write a solution to build the equation.
# 
# The result format is in the following example.
#
# Example 1:
# Input:
# Terms table:
# +-------+--------+
# | power | factor |
# +-------+--------+
# | 2     | 1      |
# | 1     | -4     |
# | 0     | 2      |
# +-------+--------+
# Output:
# +--------------+
# | equation     |
# +--------------+
# | +1X^2-4X+2=0 |
# +--------------+
#
# Example 2:
# Input:
# Terms table:
# +-------+--------+
# | power | factor |
# +-------+--------+
# | 4     | -4     |
# | 2     | 1      |
# | 1     | -1     |
# +-------+--------+
# Output:
# +-----------------+
# | equation        |
# +-----------------+
# | -4X^4+1X^2-1X=0 |
# +-----------------+

import pandas as pd

def build_the_equation(terms: pd.DataFrame) -> pd.DataFrame:
  terms = terms.sort_values('power', ascending=False)
  parts = []
  for _, row in terms.iterrows():
    p, f = int(row['power']), int(row['factor'])
    sign = '+' if f > 0 else '-'
    af = abs(f)
    if p == 0:
      parts.append(f'{sign}{af}')
    elif p == 1:
      parts.append(f'{sign}{af}X')
    else:
      parts.append(f'{sign}{af}X^{p}')
  equation = ''.join(parts) + '=0'
  return pd.DataFrame({'equation': [equation]})