前言
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 的形式好看多了