題目連結:
題目意譯:
你被給定一個索引值從 0 開始數的且大小為 3 的整數陣列 nums,其是用來形成一個三角形的三邊長。
一個三角形是「正三角形」("equilateral"),代表著三邊等長。
一個三角形是「等腰三角形」("isosceles"),代表著有其中恰好兩邊等長。
一個三角形是「不等邊三角形」("scalene"),代表著三邊彼此皆不等長。
回傳一個字串代表著其形成的三角形之種類。而如果其實際上不能形成一個三角形,則回傳 "none"。
限制:
nums.length == 3
1 ≦ nums[i] ≦ 100
範例測資:
範例 1:
輸入: nums = [3,3,3]
輸出: "equilateral"
解釋: 由於每一邊長都等長,因此其為一個正三角形。
範例 2:
輸入: nums = [3,4,5]
輸出: "scalene"
解釋:
nums[0] + nums[1] = 3 + 4 = 7,其值大於 nums[2] = 5。
nums[0] + nums[2] = 3 + 5 = 8,其值大於 nums[1] = 4。
nums[1] + nums[2] = 4 + 5 = 9,其值大於 nums[0] = 3。
由於任意兩邊長和都大於第三邊,因此其可以形成一個三角形。
由於每一邊都不等長,因此其為一個不等邊三角形。
解題思維:
直接檢查即可。
先將 nums 由小到大排序,這邊我用 a 、 b 、 c 依序代稱排序後的 nums[0] 、 nums[1] 和 nums[2]。
可以看到當 a + b <= c 時,這三邊長無法形成三角形。故回傳 "none"。
當 a == b 且 b == c 時,此時為正三角形。故回傳 "equilateral"。
而當正三角形的條件沒有過,但 a == b 或 a == c 或 b == c 有任何一個成立,則為等腰三角形。故回傳 "isosceles"。
若以上皆非,則回傳 "scalene"。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。