From 745dd62ed240de05e26779c05f964aed9f0ccefa Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sun, 4 Feb 2024 09:29:56 +0800 Subject: [PATCH] feat: add solutions to lc problem: No.3024 (#2310) No.3024.Type of Triangle II --- .../3024.Type of Triangle II/README.md | 83 ++++++++++++++++++- .../3024.Type of Triangle II/README_EN.md | 83 ++++++++++++++++++- .../3024.Type of Triangle II/Solution.cpp | 16 ++++ .../3024.Type of Triangle II/Solution.go | 13 +++ .../3024.Type of Triangle II/Solution.java | 15 ++++ .../3024.Type of Triangle II/Solution.py | 10 +++ .../3024.Type of Triangle II/Solution.ts | 13 +++ 7 files changed, 225 insertions(+), 8 deletions(-) create mode 100644 solution/3000-3099/3024.Type of Triangle II/Solution.cpp create mode 100644 solution/3000-3099/3024.Type of Triangle II/Solution.go create mode 100644 solution/3000-3099/3024.Type of Triangle II/Solution.java create mode 100644 solution/3000-3099/3024.Type of Triangle II/Solution.py create mode 100644 solution/3000-3099/3024.Type of Triangle II/Solution.ts diff --git a/solution/3000-3099/3024.Type of Triangle II/README.md b/solution/3000-3099/3024.Type of Triangle II/README.md index 1e41e2722e893..679d1ed11af9e 100644 --- a/solution/3000-3099/3024.Type of Triangle II/README.md +++ b/solution/3000-3099/3024.Type of Triangle II/README.md @@ -50,24 +50,99 @@ nums[1] + nums[2] = 4 + 5 = 9 ,大于 nums[0] = 3 。 ## 解法 -### 方法一 +### 方法一:排序 + 分类讨论 + +我们先对数组进行排序,然后根据三角形的定义进行分类讨论即可。 + +- 如果最小的两个数之和小于等于最大的数,那么无法构成三角形,返回 "none"。 +- 如果最小的数等于最大的数,那么是等边三角形,返回 "equilateral"。 +- 如果最小的数等于中间的数或者中间的数等于最大的数,那么是等腰三角形,返回 "isosceles"。 +- 否则,返回 "scalene"。 + +时间复杂度 $O(1)$,空间复杂度 $O(1)$。 ```python - +class Solution: + def triangleType(self, nums: List[int]) -> str: + nums.sort() + if nums[0] + nums[1] <= nums[2]: + return "none" + if nums[0] == nums[2]: + return "equilateral" + if nums[0] == nums[1] or nums[1] == nums[2]: + return "isosceles" + return "scalene" ``` ```java - +class Solution { + public String triangleType(int[] nums) { + Arrays.sort(nums); + if (nums[0] + nums[1] <= nums[2]) { + return "none"; + } + if (nums[0] == nums[2]) { + return "equilateral"; + } + if (nums[0] == nums[1] || nums[1] == nums[2]) { + return "isosceles"; + } + return "scalene"; + } +} ``` ```cpp - +class Solution { +public: + string triangleType(vector& nums) { + sort(nums.begin(), nums.end()); + if (nums[0] + nums[1] <= nums[2]) { + return "none"; + } + if (nums[0] == nums[2]) { + return "equilateral"; + } + if (nums[0] == nums[1] || nums[1] == nums[2]) { + return "isosceles"; + } + return "scalene"; + } +}; ``` ```go +func triangleType(nums []int) string { + sort.Ints(nums) + if nums[0]+nums[1] <= nums[2] { + return "none" + } + if nums[0] == nums[2] { + return "equilateral" + } + if nums[0] == nums[1] || nums[1] == nums[2] { + return "isosceles" + } + return "scalene" +} +``` +```ts +function triangleType(nums: number[]): string { + nums.sort((a, b) => a - b); + if (nums[0] + nums[1] <= nums[2]) { + return 'none'; + } + if (nums[0] === nums[2]) { + return 'equilateral'; + } + if (nums[0] === nums[1] || nums[1] === nums[2]) { + return 'isosceles'; + } + return 'scalene'; +} ``` diff --git a/solution/3000-3099/3024.Type of Triangle II/README_EN.md b/solution/3000-3099/3024.Type of Triangle II/README_EN.md index 06ce410e8e8ad..faa77dce472a2 100644 --- a/solution/3000-3099/3024.Type of Triangle II/README_EN.md +++ b/solution/3000-3099/3024.Type of Triangle II/README_EN.md @@ -46,24 +46,99 @@ As all the sides are of different lengths, it will form a scalene triangle. ## Solutions -### Solution 1 +### Solution 1: Sorting + Case Discussion + +First, we sort the array, and then we can classify and discuss according to the definition of a triangle. + +- 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". +- If the smallest number is equal to the largest number, then it is an equilateral triangle, return "equilateral". +- 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". +- Otherwise, return "scalene". + +The time complexity is $O(1)$, and the space complexity is $O(1)$. ```python - +class Solution: + def triangleType(self, nums: List[int]) -> str: + nums.sort() + if nums[0] + nums[1] <= nums[2]: + return "none" + if nums[0] == nums[2]: + return "equilateral" + if nums[0] == nums[1] or nums[1] == nums[2]: + return "isosceles" + return "scalene" ``` ```java - +class Solution { + public String triangleType(int[] nums) { + Arrays.sort(nums); + if (nums[0] + nums[1] <= nums[2]) { + return "none"; + } + if (nums[0] == nums[2]) { + return "equilateral"; + } + if (nums[0] == nums[1] || nums[1] == nums[2]) { + return "isosceles"; + } + return "scalene"; + } +} ``` ```cpp - +class Solution { +public: + string triangleType(vector& nums) { + sort(nums.begin(), nums.end()); + if (nums[0] + nums[1] <= nums[2]) { + return "none"; + } + if (nums[0] == nums[2]) { + return "equilateral"; + } + if (nums[0] == nums[1] || nums[1] == nums[2]) { + return "isosceles"; + } + return "scalene"; + } +}; ``` ```go +func triangleType(nums []int) string { + sort.Ints(nums) + if nums[0]+nums[1] <= nums[2] { + return "none" + } + if nums[0] == nums[2] { + return "equilateral" + } + if nums[0] == nums[1] || nums[1] == nums[2] { + return "isosceles" + } + return "scalene" +} +``` +```ts +function triangleType(nums: number[]): string { + nums.sort((a, b) => a - b); + if (nums[0] + nums[1] <= nums[2]) { + return 'none'; + } + if (nums[0] === nums[2]) { + return 'equilateral'; + } + if (nums[0] === nums[1] || nums[1] === nums[2]) { + return 'isosceles'; + } + return 'scalene'; +} ``` diff --git a/solution/3000-3099/3024.Type of Triangle II/Solution.cpp b/solution/3000-3099/3024.Type of Triangle II/Solution.cpp new file mode 100644 index 0000000000000..6e14dd1db19ec --- /dev/null +++ b/solution/3000-3099/3024.Type of Triangle II/Solution.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + string triangleType(vector& nums) { + sort(nums.begin(), nums.end()); + if (nums[0] + nums[1] <= nums[2]) { + return "none"; + } + if (nums[0] == nums[2]) { + return "equilateral"; + } + if (nums[0] == nums[1] || nums[1] == nums[2]) { + return "isosceles"; + } + return "scalene"; + } +}; \ No newline at end of file diff --git a/solution/3000-3099/3024.Type of Triangle II/Solution.go b/solution/3000-3099/3024.Type of Triangle II/Solution.go new file mode 100644 index 0000000000000..b327d71241e6d --- /dev/null +++ b/solution/3000-3099/3024.Type of Triangle II/Solution.go @@ -0,0 +1,13 @@ +func triangleType(nums []int) string { + sort.Ints(nums) + if nums[0]+nums[1] <= nums[2] { + return "none" + } + if nums[0] == nums[2] { + return "equilateral" + } + if nums[0] == nums[1] || nums[1] == nums[2] { + return "isosceles" + } + return "scalene" +} \ No newline at end of file diff --git a/solution/3000-3099/3024.Type of Triangle II/Solution.java b/solution/3000-3099/3024.Type of Triangle II/Solution.java new file mode 100644 index 0000000000000..29b69f3aa1857 --- /dev/null +++ b/solution/3000-3099/3024.Type of Triangle II/Solution.java @@ -0,0 +1,15 @@ +class Solution { + public String triangleType(int[] nums) { + Arrays.sort(nums); + if (nums[0] + nums[1] <= nums[2]) { + return "none"; + } + if (nums[0] == nums[2]) { + return "equilateral"; + } + if (nums[0] == nums[1] || nums[1] == nums[2]) { + return "isosceles"; + } + return "scalene"; + } +} \ No newline at end of file diff --git a/solution/3000-3099/3024.Type of Triangle II/Solution.py b/solution/3000-3099/3024.Type of Triangle II/Solution.py new file mode 100644 index 0000000000000..980c937d45216 --- /dev/null +++ b/solution/3000-3099/3024.Type of Triangle II/Solution.py @@ -0,0 +1,10 @@ +class Solution: + def triangleType(self, nums: List[int]) -> str: + nums.sort() + if nums[0] + nums[1] <= nums[2]: + return "none" + if nums[0] == nums[2]: + return "equilateral" + if nums[0] == nums[1] or nums[1] == nums[2]: + return "isosceles" + return "scalene" diff --git a/solution/3000-3099/3024.Type of Triangle II/Solution.ts b/solution/3000-3099/3024.Type of Triangle II/Solution.ts new file mode 100644 index 0000000000000..449ef2d328f74 --- /dev/null +++ b/solution/3000-3099/3024.Type of Triangle II/Solution.ts @@ -0,0 +1,13 @@ +function triangleType(nums: number[]): string { + nums.sort((a, b) => a - b); + if (nums[0] + nums[1] <= nums[2]) { + return 'none'; + } + if (nums[0] === nums[2]) { + return 'equilateral'; + } + if (nums[0] === nums[1] || nums[1] === nums[2]) { + return 'isosceles'; + } + return 'scalene'; +}