2023-12-18|閱讀時間 ‧ 約 4 分鐘

SQL 函式IF(...)語法 判斷是否為合法的三角形 Leetcode #610

題目敘述

題目會給我們一張資料表Triangle。

裡面分別有x、 y、z等欄位,分別代表三個邊長。其中(x、 y、z)做為複合主鍵Primary key

要求我們判斷,每條data row裡面的x, y, z 能否構成一個合法的三角形?

如果可以,返回字串"Yes";如果不行,返回字串"No"


輸出的順序不拘


Table: Triangle

+-------------+------+
| Column Name | Type |
+-------------+------+
| x | int |
| y | int |
| z | int |
+-------------+------+
In SQL, (x, y, z) is the primary key column for this table.
Each row of this table contains the lengths of three line segments.

詳細的題目可在這裡看到


測試範例

Example 1:

Input: 
Triangle table:
+----+----+----+
| x | y | z |
+----+----+----+
| 13 | 15 | 30 |
| 10 | 20 | 15 |
+----+----+----+

Output:
+----+----+----+----------+
| x | y | z | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No |
| 10 | 20 | 15 | Yes |
+----+----+----+----------+

演算法


主要有兩個考察點。

  1. 聯想到用三角不等式: 兩邊相加大於第三邊 來判斷合法的三角形
  2. 想到SQL中的 IF( ...condition, return value on True, return value on False)來輸出答案。


第一個就是以前學過的三角不等式,三角形的任兩邊相加一定大於第三邊。

image.png

x + y > z,
y + z > x,
x + z > y
對於合法三角形來說,恆成立​


第二個考察點,聯想到可以使用IF( 布林條件判斷式, True的返回值, False的返回值)來輸出答案。

IF(x + y > z AND y + z > x AND x + z > y, "Yes", "No") AS triangle

程式碼

SELECT *, IF(x + y > z AND y + z > x AND x + z > y, "Yes", "No") AS triangle
FROM Triangle;

關鍵知識點

  1. 聯想到用三角不等式: 兩邊相加大於第三邊 來判斷合法的三角形
  2. 想到SQL中的 IF( ...condition, return value on True, return value on False)來輸出答案。

Reference:

[1] MySQL adding field with IF( ... condition, "Yes", "No" ) statement [w/ Comment] - Triangle Judgement - LeetCode

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.