从数学思路解决leetcode

MySql GREATEST 使用

Posted by Autuan.Yu on August 18, 2026

前言

leetcode , SQL50 , #610 题

是计算 x,y,z 三个列的长度,能否组成三角形

目前的解法基本上都是明确计算 x+y>z 的形式 :

select x,y,z,
if ( x+y > z and x+z > y and y+z > x ,'Yes','No') as triangle
from Triangle

我的解法

在数学定义上,三角形的构成条件: 任意两边之和大于第三边。

即:若三角形的最长边为z , 则在数学上必然:

x + y + z > z + z

所以,直接使用 GREATEST 来寻找最长边

将最长边乘2 , 直接对比x+y+z 之和 :

SELECT
    x,y,z,
    IF(
        2 * GREATEST(x, y, z) < x + y + z,
        'Yes','No' ) AS triangle
FROM Triangle;

是不是比 x + y > z 的形式好看多了