|
| 1 | +--- |
| 2 | +title: 3024.三角形类:手速题 |
| 3 | +date: 2025-05-19 13:36:41 |
| 4 | +tags: [题解, LeetCode, 简单, 数组, 数学, 排序] |
| 5 | +categories: [题解, LeetCode] |
| 6 | +--- |
| 7 | + |
| 8 | +# 【LetMeFly】3024.三角形类型:手速题 |
| 9 | + |
| 10 | +力扣题目链接:[https://leetcode.cn/problems/type-of-triangle/](https://leetcode.cn/problems/type-of-triangle/) |
| 11 | + |
| 12 | +<p>给你一个下标从 <strong>0</strong> 开始长度为 <code>3</code> 的整数数组 <code>nums</code> ,需要用它们来构造三角形。</p> |
| 13 | + |
| 14 | +<ul> |
| 15 | + <li>如果一个三角形的所有边长度相等,那么这个三角形称为 <strong>equilateral</strong> 。</li> |
| 16 | + <li>如果一个三角形恰好有两条边长度相等,那么这个三角形称为 <strong>isosceles</strong> 。</li> |
| 17 | + <li>如果一个三角形三条边的长度互不相同,那么这个三角形称为 <strong>scalene</strong> 。</li> |
| 18 | +</ul> |
| 19 | + |
| 20 | +<p>如果这个数组无法构成一个三角形,请你返回字符串 <code>"none"</code> ,否则返回一个字符串表示这个三角形的类型。</p> |
| 21 | + |
| 22 | +<p> </p> |
| 23 | + |
| 24 | +<p><strong class="example">示例 1:</strong></p> |
| 25 | + |
| 26 | +<pre> |
| 27 | +<b>输入:</b>nums = [3,3,3] |
| 28 | +<b>输出:</b>"equilateral" |
| 29 | +<b>解释:</b>由于三条边长度相等,所以可以构成一个等边三角形,返回 "equilateral" 。 |
| 30 | +</pre> |
| 31 | + |
| 32 | +<p><strong class="example">示例 2:</strong></p> |
| 33 | + |
| 34 | +<pre> |
| 35 | +<b>输入:</b>nums = [3,4,5] |
| 36 | +<b>输出:</b>"scalene" |
| 37 | +<b>解释:</b> |
| 38 | +nums[0] + nums[1] = 3 + 4 = 7 ,大于 nums[2] = 5 <span style="text-wrap: wrap;">。</span> |
| 39 | +nums[0] + nums[2] = 3 + 5 = 8 ,大于 nums[1] = 4 。 |
| 40 | +nums[1] + nums[2] = 4 + 5 = 9 ,大于 nums[0] = 3 。 |
| 41 | +由于任意两边之和都大于第三边,所以可以构成一个三角形,因为三条边的长度互不相等,所以返回 "scalene"。 |
| 42 | +</pre> |
| 43 | + |
| 44 | +<p><strong>提示:</strong></p> |
| 45 | + |
| 46 | +<ul> |
| 47 | + <li><code>nums.length == 3</code></li> |
| 48 | + <li><code>1 <= nums[i] <= 100</code></li> |
| 49 | +</ul> |
| 50 | + |
| 51 | + |
| 52 | + |
| 53 | +## 解题方法:if-else |
| 54 | + |
| 55 | +为了判断给定三个变长是否满足三角形的基本性质(以及是否有两边等长),可以先将三个数从小到大排个序。 |
| 56 | + |
| 57 | ++ 如果两边之和小于等于第三边则不能构成三角形 |
| 58 | ++ 如果三边全相等则为正三角形 |
| 59 | ++ 如果有任何两边相等则为等腰三角形 |
| 60 | ++ 否则为普通三角形 |
| 61 | + |
| 62 | +以上。 |
| 63 | + |
| 64 | ++ 时间复杂度$O(1)$ |
| 65 | ++ 空间复杂度$O(1)$ |
| 66 | + |
| 67 | +### AC代码 |
| 68 | + |
| 69 | +#### C++ |
| 70 | + |
| 71 | +```cpp |
| 72 | +/* |
| 73 | + * @Author: LetMeFly |
| 74 | + * @Date: 2025-05-19 13:22:46 |
| 75 | + * @LastEditors: LetMeFly.xyz |
| 76 | + * @LastEditTime: 2025-05-19 13:28:44 |
| 77 | + */ |
| 78 | +class Solution { |
| 79 | +public: |
| 80 | + string triangleType(vector<int>& nums) { |
| 81 | + sort(nums.begin(), nums.end()); |
| 82 | + if (nums[0] + nums[1] <= nums[2]) { |
| 83 | + return "none"; |
| 84 | + } |
| 85 | + if (nums[0] == nums[1] && nums[1] == nums[2]) { |
| 86 | + return "equilateral"; |
| 87 | + } |
| 88 | + if (nums[0] == nums[1] || nums[1] == nums[2]) { |
| 89 | + return "isosceles"; |
| 90 | + } |
| 91 | + return "scalene"; |
| 92 | + } |
| 93 | +}; |
| 94 | +``` |
| 95 | +
|
| 96 | +#### Python |
| 97 | +
|
| 98 | +```python |
| 99 | +''' |
| 100 | +Author: LetMeFly |
| 101 | +Date: 2025-05-19 13:22:46 |
| 102 | +LastEditors: LetMeFly.xyz |
| 103 | +LastEditTime: 2025-05-19 13:30:25 |
| 104 | +''' |
| 105 | +from typing import List |
| 106 | +
|
| 107 | +class Solution: |
| 108 | + def triangleType(self, nums: List[int]) -> str: |
| 109 | + nums.sort() |
| 110 | + a, b, c = nums |
| 111 | + if a + b <= c: |
| 112 | + return "none" |
| 113 | + if a == b == c: |
| 114 | + return "equilateral" |
| 115 | + if a == b or b == c: |
| 116 | + return "isosceles" |
| 117 | + return "scalene" |
| 118 | +``` |
| 119 | + |
| 120 | +#### Java |
| 121 | + |
| 122 | +```java |
| 123 | +/* |
| 124 | + * @Author: LetMeFly |
| 125 | + * @Date: 2025-05-19 13:22:46 |
| 126 | + * @LastEditors: LetMeFly.xyz |
| 127 | + * @LastEditTime: 2025-05-19 13:32:46 |
| 128 | + */ |
| 129 | +import java.util.Arrays; |
| 130 | + |
| 131 | +class Solution { |
| 132 | + public String triangleType(int[] nums) { |
| 133 | + Arrays.sort(nums); |
| 134 | + if (nums[0] + nums[1] <= nums[2]) { |
| 135 | + return "none"; |
| 136 | + } |
| 137 | + if (nums[0] == nums[1] && nums[1] == nums[2]) { |
| 138 | + return "equilateral"; |
| 139 | + } |
| 140 | + if (nums[0] == nums[1] || nums[1] == nums[2]) { |
| 141 | + return "isosceles"; |
| 142 | + } |
| 143 | + return "scalene"; |
| 144 | + } |
| 145 | +} |
| 146 | +``` |
| 147 | + |
| 148 | +#### Go |
| 149 | + |
| 150 | +```go |
| 151 | +/* |
| 152 | + * @Author: LetMeFly |
| 153 | + * @Date: 2025-05-19 13:22:46 |
| 154 | + * @LastEditors: LetMeFly.xyz |
| 155 | + * @LastEditTime: 2025-05-19 13:35:48 |
| 156 | + */ |
| 157 | +package main |
| 158 | + |
| 159 | +import "sort" |
| 160 | + |
| 161 | +func triangleType(nums []int) string { |
| 162 | + sort.Ints(nums) |
| 163 | + if nums[0] + nums[1] <= nums[2] { |
| 164 | + return "none" |
| 165 | + } |
| 166 | + if nums[0] == nums[1] && nums[1] == nums[2] { |
| 167 | + return "equilateral" |
| 168 | + } |
| 169 | + if nums[0] == nums[1] || nums[1] == nums[2] { |
| 170 | + return "isosceles" |
| 171 | + } |
| 172 | + return "scalene" |
| 173 | +} |
| 174 | +``` |
| 175 | + |
| 176 | +> 同步发文于[CSDN](https://letmefly.blog.csdn.net/article/details/148061722)和我的[个人博客](https://blog.letmefly.xyz/),原创不易,转载经作者同意后请附上[原文链接](https://blog.letmefly.xyz/2025/05/19/LeetCode%203024.%E4%B8%89%E8%A7%92%E5%BD%A2%E7%B1%BB%E5%9E%8B/)哦~ |
| 177 | +> |
| 178 | +> 千篇源码题解[已开源](https://github.com/LetMeFly666/LeetCode) |
0 commit comments