题目链接3024. 三角形类型 - 力扣(LeetCode)
题目分析
这道题要求我们根据给定的三个整数来判断它们能否构成一个三角形,并确定该三角形的类型。三角形的类型分为等边三角形(equilateral)、等腰三角形(isosceles)、不等边三角形(scalene),如果无法构成三角形则返回 "none"。
解题思路
解题的关键在于理解三角形的性质和各种类型三角形的定义:
-
三角形存在的条件:对于三条边 a、b、c,必须满足任意两边之和大于第三边。即:
- a + b > c
- a + c > b
- b + c > a
-
等边三角形:三条边长度完全相等。
-
等腰三角形:恰好有两条边长度相等。
-
不等边三角形:三条边长度均不相等。
代码实现
class Solution {
public:
string triangleType(vector<int>& nums) {
int a = nums[0];
int b = nums[1];
int c = nums[2];
if(a + b <= c || a + c <= b || b + c <= a){
return "none";
}else if(a == b && b == c && a == c){
return "equilateral";
}else if (a == b || b == c || a == c){
return "isosceles";
}else {
return "scalene";
}
}
};
代码解释
- 变量初始化:从输入数组中提取三个整数作为三角形的三条边。
- 三角形存在检查:首先检查这三条边是否能构成一个三角形。如果任意两边之和小于或等于第三边,则返回 "none"。
- 等边三角形检查:如果三条边都相等,则返回 "equilateral"。
- 等腰三角形检查:如果恰好有两条边相等,则返回 "isosceles"。
- 不等边三角形:如果以上条件都不满足,则三条边长度互不相同,返回 "scalene"。
复杂度分析
- 时间复杂度:O (1),因为只进行了固定次数的比较操作。
- 空间复杂度:O (1),只使用了常数级的额外空间。