3024.三角形类:手速题

【LetMeFly】3024.三角形类型:手速题

力扣题目链接:https://leetcode.cn/problems/type-of-triangle/

给你一个下标从 0 开始长度为 3 的整数数组 nums ,需要用它们来构造三角形。

  • 如果一个三角形的所有边长度相等,那么这个三角形称为 equilateral 。
  • 如果一个三角形恰好有两条边长度相等,那么这个三角形称为 isosceles 。
  • 如果一个三角形三条边的长度互不相同,那么这个三角形称为 scalene 。

如果这个数组无法构成一个三角形,请你返回字符串 "none" ,否则返回一个字符串表示这个三角形的类型。

 

示例 1:

输入:nums = [3,3,3]
输出:"equilateral"
解释:由于三条边长度相等,所以可以构成一个等边三角形,返回 "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 。
由于任意两边之和都大于第三边,所以可以构成一个三角形,因为三条边的长度互不相等,所以返回 "scalene"。

提示:

  • nums.length == 3
  • 1 <= nums[i] <= 100

解题方法:if-else

为了判断给定三个变长是否满足三角形的基本性质(以及是否有两边等长),可以先将三个数从小到大排个序。

  • 如果两边之和小于等于第三边则不能构成三角形
  • 如果三边全相等则为正三角形
  • 如果有任何两边相等则为等腰三角形
  • 否则为普通三角形

以上。

  • 时间复杂度$O(1)$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
* @Author: LetMeFly
* @Date: 2025-05-19 13:22:46
* @LastEditors: LetMeFly.xyz
* @LastEditTime: 2025-05-19 13:28:44
*/
class Solution {
public:
string triangleType(vector<int>& nums) {
sort(nums.begin(), nums.end());
if (nums[0] + nums[1] <= nums[2]) {
return "none";
}
if (nums[0] == nums[1] && nums[1] == nums[2]) {
return "equilateral";
}
if (nums[0] == nums[1] || nums[1] == nums[2]) {
return "isosceles";
}
return "scalene";
}
};

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'''
Author: LetMeFly
Date: 2025-05-19 13:22:46
LastEditors: LetMeFly.xyz
LastEditTime: 2025-05-19 13:30:25
'''
from typing import List

class Solution:
def triangleType(self, nums: List[int]) -> str:
nums.sort()
a, b, c = nums
if a + b <= c:
return "none"
if a == b == c:
return "equilateral"
if a == b or b == c:
return "isosceles"
return "scalene"

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
* @Author: LetMeFly
* @Date: 2025-05-19 13:22:46
* @LastEditors: LetMeFly.xyz
* @LastEditTime: 2025-05-19 13:32:46
*/
import java.util.Arrays;

class Solution {
public String triangleType(int[] nums) {
Arrays.sort(nums);
if (nums[0] + nums[1] <= nums[2]) {
return "none";
}
if (nums[0] == nums[1] && nums[1] == nums[2]) {
return "equilateral";
}
if (nums[0] == nums[1] || nums[1] == nums[2]) {
return "isosceles";
}
return "scalene";
}
}

Go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
* @Author: LetMeFly
* @Date: 2025-05-19 13:22:46
* @LastEditors: LetMeFly.xyz
* @LastEditTime: 2025-05-19 13:35:48
*/
package main

import "sort"

func triangleType(nums []int) string {
sort.Ints(nums)
if nums[0] + nums[1] <= nums[2] {
return "none"
}
if nums[0] == nums[1] && nums[1] == nums[2] {
return "equilateral"
}
if nums[0] == nums[1] || nums[1] == nums[2] {
return "isosceles"
}
return "scalene"
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源