Problem
You are given a 0-indexed integer array nums
of size 3
which can form the sides of a triangle.
- A triangle is called equilateral if it has all sides of equal length.
- A triangle is called isosceles if it has exactly two sides of equal length.
- A triangle is called scalene if all its sides are of different lengths.
Return a string representing the type of triangle that can be formed or "none"
if it cannot form a triangle.
Examples
Example 1:
|
|
Example 2:
|
|
Constraints:
nums.length == 3
1 <= nums[i] <= 100
Solution
Method 1 - Mathematics
A triangle can be formed if the sum of any two sides is greater than the third side. Once we determine that the triangle can be formed, we can classify it based on the following definitions:
- Equilateral: All three sides are equal.
- Isosceles: Exactly two sides are equal.
- Scalene: All sides are different.
If the array doesn’t meet the triangle inequality condition, the answer is "none"
.
Approach
-
Check for Triangle Formation: Verify the triangle inequality:
nums[0] + nums[1] > nums[2]
nums[1] + nums[2] > nums[0]
nums[0] + nums[2] > nums[1]
-
Classify the Triangle:
- If all three sides are equal (
nums[0] == nums[1] == nums[2]
), the triangle is equilateral. - If exactly two sides are equal (e.g.,
nums[0] == nums[1] || nums[1] == nums[2] || nums[0] == nums[2]
), the triangle is isosceles. - If no sides are equal (
nums[0] != nums[1] && nums[1] != nums[2] && nums[0] != nums[2]
), the triangle is scalene.
- If all three sides are equal (
-
Return
"none"
if the triangle inequality is invalid.
Code
|
|
|
|
Complexity
- ⏰ Time complexity:
O(1)
as the operations involve a fixed number of comparisons. - 🧺 Space complexity:
O(1)
as no extra space is used beyond a few primitive variables.