重点: 逆序排序后的数组,【a,b,c】,满足 a>=b>=c, 则 a+b>c, a+c>b天然满足,只要b+c>a
即可证明符合三角形构造条件
<?php
class Solution {
/**
* @param int[] $nums
* @return int
*/
function largestPerimeter($nums) {
rsort($nums);
$limit = count($nums) - 2;
for($i = 0; $i <= $limit; $i++) {
if($nums[$i + 2] + $nums[$i + 1] > $nums[$i]) {
return $nums[$i + 2] + $nums[$i + 1] + $nums[$i];
}
}
return 0;
}
}
$s = new Solution();
$ans = $s->largestPerimeter([2,1,2]);
assert($ans == 5, 'input:[2,1,2], largestPerimeter should be 5');
$ans = $s->largestPerimeter([1,2,1,10]);
assert($ans == 0, 'input:[1,2,1,10], largestPerimeter should be 0');