題目描述
給定由一些正數(shù)(代表長(zhǎng)度)組成的數(shù)組 A胎撤,返回由其中三個(gè)長(zhǎng)度組成的、面積不為零的三角形的最大周長(zhǎng)断凶。
如果不能形成任何面積不為零的三角形伤提,返回 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
解題思路
排序后认烁,最大周長(zhǎng)一定是緊鄰的三個(gè)肿男,如果緊鄰的兩個(gè)不大于第三個(gè)那么前面的任意兩個(gè)相加就更不可能,并且相加也不可能大于后面的任意一個(gè)却嗡。所以只需要逆序遍歷能組成三角形的緊鄰的三條邊舶沛,即為最大周長(zhǎng)。
源碼
class Solution {
public:
int largestPerimeter(vector<int>& A) {
//貪心算法
int n=A.size();
// 數(shù)組個(gè)數(shù)小于3返回0
if(n==0||n==1||n==2)return 0;
sort(A.begin(),A.end()); // 排序
int a,b,c;
for(int i=n-1;i>=2;i--)
{
c=A[i]; // 最大邊長(zhǎng)
b=A[i-1];
a=A[i-2];
if(a+b>c)
{
return a+b+c; // 如果最大邊長(zhǎng)小于其余兩邊之和窗价,則此時(shí)三角形為最大周長(zhǎng)冠王,返回
}
}
return 0; // 不能形成三角形,返回0
}
};
題目來(lái)源
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/largest-perimeter-triangle
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有舌镶。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)柱彻,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。