https://leetcode-cn.com/problems/largest-perimeter-triangle/
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0。
示例 1:
输入:[2,1,2]
输出:5
示例 2:
输入:[1,2,1]
输出:0
示例 3:
输入:[3,2,3,4]
输出:10
示例 4:
输入:[3,6,2,3]
输出:8
提示:
3 <= A.length <= 10000
1 <= A[i] <= 10^6
小菜鸡的尝试:
害,写了那么多天还是只能写最粗暴的。先写了一个三角形判断函数,判断能否组成面积不为0的三角形。题目要求给出面积不为零的周长最长三角形,那么优先考虑最长的三条边,如果不能组成面积非零的三角形,再考虑次长的三条……
因此产生思路,先给边集进行从大到小排序,每三条边三条边地遍历,一旦有满足面积非零地三角形出现就输出周长。如果结束循环还未跳出,就返回0(以为不存在组成面积非0地三角形的三条边)
1 class Solution { 2 public: 3 int judge (int a, int b, int c) { 4 if (a + b > c && a + c > b & b + c > a) return 1; 5 return 0; 6 } 7 int largestPerimeter(vector<int>& A) { 8 sort(A.begin(), A.end(), greater<int>()); 9 int size = A.size(); 10 for (int i = 0; i < size - 2; i ++) { 11 if (judge(A[i], A[i + 1], A[i + 2]) == 0) continue; 12 return A[i] + A[i + 1] + A[i + 2]; 13 } 14 return 0; 15 } 16 };
膜拜大佬代码:
看了题解好像也还是这样做!耶耶!
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-perimeter-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。