判断三条线段能否组成三角形
LeetCode 610 · IF / CASE、条件表达式
面试怎么回答
任意两边之和大于第三边,三个条件同时满足才是三角形。我会用 CASE WHEN x + y > z AND x + z > y AND y + z > x THEN 'Yes' ELSE 'No' END,比 IF 和 && 的写法通用。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
题意
每行是三条线段的长度,判断它们能否组成三角形,输出 Yes 或 No。
表结构
- triangle:x、y、z;(x, y, z) 为主键
思路
三角形的充要条件是任意两边之和大于第三边,三个不等式同时成立。用 IF 或 CASE WHEN 输出结果即可。
参考解法
select x,y,z,
if(x+y>z && x+z>y && y+z>x,'Yes','No') triangle
from triangle
易错点
- 只判断一组不等式不够,三组都要满足。
&&是 MySQL 的写法,标准 SQL 用 AND,CASE WHEN 的可移植性更好。