Skip to content

Latest commit

 

History

History
152 lines (123 loc) · 3.69 KB

File metadata and controls

152 lines (123 loc) · 3.69 KB
comments difficulty edit_url tags
true
困难
数据库

English Version

题目描述

表: Terms

+-------------+------+
| Column Name | Type |
+-------------+------+
| power       | int  |
| factor      | int  |
+-------------+------+
power 是该表具有唯一值的列。
该表的每一行包含关于方程的一项的信息。
power 是范围为 [0, 100] 的整数。
factor 是范围为 [-100,100] 的整数,且不能为零。

 

你有一个非常强大的程序,可以解决世界上任何单变量的方程。传递给程序的方程必须格式化如下:

  • 左边 (LHS) 应该包含所有的术语。
  • 右边 (RHS) 应该是零。
  • LHS 的每一项应遵循 "<sign><fact>X^<pow>" 的格式,其中:
    • <sign>"+" 或者 "-"
    • <fact> 是 factor 的 绝对值
    • <pow>power 的值。
  • 如果幂是 1, 不要加上 "^<pow>".
    • 例如, 如果 power = 1 并且 factor = 3, 将有 "+3X"
  • 如果幂是 0, 不要加上 "X" 和 "^<pow>".
    • 例如, 如果 power = 0 并且 factor = -3, 将有 "-3"
  • LHS 中的幂应该按 降序排序

编写一个解决方案来构建方程。

结果格式如下所示。

 

示例 1:

输入: 
Terms 表:
+-------+--------+
| power | factor |
+-------+--------+
| 2     | 1      |
| 1     | -4     |
| 0     | 2      |
+-------+--------+
输出: 
+--------------+
| equation     |
+--------------+
| +1X^2-4X+2=0 |
+--------------+

示例 2:

输入: 
Terms 表:
+-------+--------+
| power | factor |
+-------+--------+
| 4     | -4     |
| 2     | 1      |
| 1     | -1     |
+-------+--------+
输出: 
+-----------------+
| equation        |
+-----------------+
| -4X^4+1X^2-1X=0 |
+-----------------+

 

扩展: 如果幂函数不是主键,但每个幂函数在答案中都是唯一的,那么解决方案中需要改变什么?

解法

方法一

MySQL

# Write your MySQL query statement below
WITH
    T AS (
        SELECT
            power,
            CASE power
                WHEN 0 THEN IF(factor > 0, CONCAT('+', factor), factor)
                WHEN 1 THEN CONCAT(
                    IF(factor > 0, CONCAT('+', factor), factor),
                    'X'
                )
                ELSE CONCAT(
                    IF(factor > 0, CONCAT('+', factor), factor),
                    'X^',
                    power
                )
            END AS it
        FROM Terms
    )
SELECT
    CONCAT(GROUP_CONCAT(it ORDER BY power DESC SEPARATOR ""), '=0') AS equation
FROM T;