思路:
1.首先判断符合三角形的条件:因为三个元素是按大小排好序的,所以只要前两个元素的和大于第三个即可;
2.其次对于为什么找到的第一个滑动窗口就是答案:因为是从大到小遍历,所有最先找到的一定是最大的;
3.最后为什么采用滑动窗口:以【1,2,3,3,6】为例,最开始时检验3,3,6是否符合要求,因为3+3=6,不符合要求,假设将第一个数换成2,判断2+3<6,更加不符合要求,因为前面的数越来越小,所以只能把6去掉,检验2,3,3,相当于向左滑动窗口,2+3>3符合要求;
算法实现步骤:
1.排序
2.从后向前滑动窗口(大小为3)第一个找到的符合要求的窗口即为答案,返回窗口内的所有值的和即可
class Solution {
public int largestPerimeter(int[] A) {
if(A == null || A.length < 3){
return 0;
}
Arrays.sort(A);
for(int i=A.length - 3; i>=0; i --){
if(A[i + 1] + A[i]>A[i+2]){
return A[i] + A [i + 1] + A[i+2];
}
}
return 0;
}
}