Skip to content

Commit 745dd62

Browse files
authored
feat: add solutions to lc problem: No.3024 (#2310)
No.3024.Type of Triangle II
1 parent 3d68c8a commit 745dd62

File tree

7 files changed

+225
-8
lines changed

7 files changed

+225
-8
lines changed

solution/3000-3099/3024.Type of Triangle II/README.md

+79-4
Original file line numberDiff line numberDiff line change
@@ -50,24 +50,99 @@ nums[1] + nums[2] = 4 + 5 = 9 ,大于 nums[0] = 3 。
5050

5151
## 解法
5252

53-
### 方法一
53+
### 方法一:排序 + 分类讨论
54+
55+
我们先对数组进行排序,然后根据三角形的定义进行分类讨论即可。
56+
57+
- 如果最小的两个数之和小于等于最大的数,那么无法构成三角形,返回 "none"。
58+
- 如果最小的数等于最大的数,那么是等边三角形,返回 "equilateral"。
59+
- 如果最小的数等于中间的数或者中间的数等于最大的数,那么是等腰三角形,返回 "isosceles"。
60+
- 否则,返回 "scalene"。
61+
62+
时间复杂度 $O(1)$,空间复杂度 $O(1)$。
5463

5564
<!-- tabs:start -->
5665

5766
```python
58-
67+
class Solution:
68+
def triangleType(self, nums: List[int]) -> str:
69+
nums.sort()
70+
if nums[0] + nums[1] <= nums[2]:
71+
return "none"
72+
if nums[0] == nums[2]:
73+
return "equilateral"
74+
if nums[0] == nums[1] or nums[1] == nums[2]:
75+
return "isosceles"
76+
return "scalene"
5977
```
6078

6179
```java
62-
80+
class Solution {
81+
public String triangleType(int[] nums) {
82+
Arrays.sort(nums);
83+
if (nums[0] + nums[1] <= nums[2]) {
84+
return "none";
85+
}
86+
if (nums[0] == nums[2]) {
87+
return "equilateral";
88+
}
89+
if (nums[0] == nums[1] || nums[1] == nums[2]) {
90+
return "isosceles";
91+
}
92+
return "scalene";
93+
}
94+
}
6395
```
6496

6597
```cpp
66-
98+
class Solution {
99+
public:
100+
string triangleType(vector<int>& nums) {
101+
sort(nums.begin(), nums.end());
102+
if (nums[0] + nums[1] <= nums[2]) {
103+
return "none";
104+
}
105+
if (nums[0] == nums[2]) {
106+
return "equilateral";
107+
}
108+
if (nums[0] == nums[1] || nums[1] == nums[2]) {
109+
return "isosceles";
110+
}
111+
return "scalene";
112+
}
113+
};
67114
```
68115
69116
```go
117+
func triangleType(nums []int) string {
118+
sort.Ints(nums)
119+
if nums[0]+nums[1] <= nums[2] {
120+
return "none"
121+
}
122+
if nums[0] == nums[2] {
123+
return "equilateral"
124+
}
125+
if nums[0] == nums[1] || nums[1] == nums[2] {
126+
return "isosceles"
127+
}
128+
return "scalene"
129+
}
130+
```
70131

132+
```ts
133+
function triangleType(nums: number[]): string {
134+
nums.sort((a, b) => a - b);
135+
if (nums[0] + nums[1] <= nums[2]) {
136+
return 'none';
137+
}
138+
if (nums[0] === nums[2]) {
139+
return 'equilateral';
140+
}
141+
if (nums[0] === nums[1] || nums[1] === nums[2]) {
142+
return 'isosceles';
143+
}
144+
return 'scalene';
145+
}
71146
```
72147

73148
<!-- tabs:end -->

solution/3000-3099/3024.Type of Triangle II/README_EN.md

+79-4
Original file line numberDiff line numberDiff line change
@@ -46,24 +46,99 @@ As all the sides are of different lengths, it will form a scalene triangle.
4646

4747
## Solutions
4848

49-
### Solution 1
49+
### Solution 1: Sorting + Case Discussion
50+
51+
First, we sort the array, and then we can classify and discuss according to the definition of a triangle.
52+
53+
- If the sum of the smallest two numbers is less than or equal to the largest number, then it cannot form a triangle, return "none".
54+
- If the smallest number is equal to the largest number, then it is an equilateral triangle, return "equilateral".
55+
- If the smallest number is equal to the middle number or the middle number is equal to the largest number, then it is an isosceles triangle, return "isosceles".
56+
- Otherwise, return "scalene".
57+
58+
The time complexity is $O(1)$, and the space complexity is $O(1)$.
5059

5160
<!-- tabs:start -->
5261

5362
```python
54-
63+
class Solution:
64+
def triangleType(self, nums: List[int]) -> str:
65+
nums.sort()
66+
if nums[0] + nums[1] <= nums[2]:
67+
return "none"
68+
if nums[0] == nums[2]:
69+
return "equilateral"
70+
if nums[0] == nums[1] or nums[1] == nums[2]:
71+
return "isosceles"
72+
return "scalene"
5573
```
5674

5775
```java
58-
76+
class Solution {
77+
public String triangleType(int[] nums) {
78+
Arrays.sort(nums);
79+
if (nums[0] + nums[1] <= nums[2]) {
80+
return "none";
81+
}
82+
if (nums[0] == nums[2]) {
83+
return "equilateral";
84+
}
85+
if (nums[0] == nums[1] || nums[1] == nums[2]) {
86+
return "isosceles";
87+
}
88+
return "scalene";
89+
}
90+
}
5991
```
6092

6193
```cpp
62-
94+
class Solution {
95+
public:
96+
string triangleType(vector<int>& nums) {
97+
sort(nums.begin(), nums.end());
98+
if (nums[0] + nums[1] <= nums[2]) {
99+
return "none";
100+
}
101+
if (nums[0] == nums[2]) {
102+
return "equilateral";
103+
}
104+
if (nums[0] == nums[1] || nums[1] == nums[2]) {
105+
return "isosceles";
106+
}
107+
return "scalene";
108+
}
109+
};
63110
```
64111
65112
```go
113+
func triangleType(nums []int) string {
114+
sort.Ints(nums)
115+
if nums[0]+nums[1] <= nums[2] {
116+
return "none"
117+
}
118+
if nums[0] == nums[2] {
119+
return "equilateral"
120+
}
121+
if nums[0] == nums[1] || nums[1] == nums[2] {
122+
return "isosceles"
123+
}
124+
return "scalene"
125+
}
126+
```
66127

128+
```ts
129+
function triangleType(nums: number[]): string {
130+
nums.sort((a, b) => a - b);
131+
if (nums[0] + nums[1] <= nums[2]) {
132+
return 'none';
133+
}
134+
if (nums[0] === nums[2]) {
135+
return 'equilateral';
136+
}
137+
if (nums[0] === nums[1] || nums[1] === nums[2]) {
138+
return 'isosceles';
139+
}
140+
return 'scalene';
141+
}
67142
```
68143

69144
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
string triangleType(vector<int>& nums) {
4+
sort(nums.begin(), nums.end());
5+
if (nums[0] + nums[1] <= nums[2]) {
6+
return "none";
7+
}
8+
if (nums[0] == nums[2]) {
9+
return "equilateral";
10+
}
11+
if (nums[0] == nums[1] || nums[1] == nums[2]) {
12+
return "isosceles";
13+
}
14+
return "scalene";
15+
}
16+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
func triangleType(nums []int) string {
2+
sort.Ints(nums)
3+
if nums[0]+nums[1] <= nums[2] {
4+
return "none"
5+
}
6+
if nums[0] == nums[2] {
7+
return "equilateral"
8+
}
9+
if nums[0] == nums[1] || nums[1] == nums[2] {
10+
return "isosceles"
11+
}
12+
return "scalene"
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public String triangleType(int[] nums) {
3+
Arrays.sort(nums);
4+
if (nums[0] + nums[1] <= nums[2]) {
5+
return "none";
6+
}
7+
if (nums[0] == nums[2]) {
8+
return "equilateral";
9+
}
10+
if (nums[0] == nums[1] || nums[1] == nums[2]) {
11+
return "isosceles";
12+
}
13+
return "scalene";
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def triangleType(self, nums: List[int]) -> str:
3+
nums.sort()
4+
if nums[0] + nums[1] <= nums[2]:
5+
return "none"
6+
if nums[0] == nums[2]:
7+
return "equilateral"
8+
if nums[0] == nums[1] or nums[1] == nums[2]:
9+
return "isosceles"
10+
return "scalene"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function triangleType(nums: number[]): string {
2+
nums.sort((a, b) => a - b);
3+
if (nums[0] + nums[1] <= nums[2]) {
4+
return 'none';
5+
}
6+
if (nums[0] === nums[2]) {
7+
return 'equilateral';
8+
}
9+
if (nums[0] === nums[1] || nums[1] === nums[2]) {
10+
return 'isosceles';
11+
}
12+
return 'scalene';
13+
}

0 commit comments

Comments
 (0)