image.png
    思路:
    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)第一个找到的符合要求的窗口即为答案,返回窗口内的所有值的和即可

    1. class Solution {
    2. public int largestPerimeter(int[] A) {
    3. if(A == null || A.length < 3){
    4. return 0;
    5. }
    6. Arrays.sort(A);
    7. for(int i=A.length - 3; i>=0; i --){
    8. if(A[i + 1] + A[i]>A[i+2]){
    9. return A[i] + A [i + 1] + A[i+2];
    10. }
    11. }
    12. return 0;
    13. }
    14. }