三角形的最大周長


給定由一些正數(表明長度)組成的數組 A,返回由其中三個長度組成的、面積不爲零的三角形的最大周長。若是不能造成任何面積不爲零的三角形,返回 0java


解題思路

三條邊組成面積不爲零的三角形的充分必要條件爲 a + b > c,所以咱們首先將數組升序排序,從最後三個開始枚舉,找出符合構成三角形的最大的三個數便可數組

class Solution {
    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        int a = A.length - 3, b = A.length - 2, c = A.length - 1;
        while(a >= 0) {
            if(A[a] + A[b] > A[c]) {
                return A[a] + A[b] + A[c];
            }
            a--;
            b--;
            c--;
        }
        return 0;
    }
}

時間複雜度:O(NlogN),其中 N 是數組 A 的長度code

空間複雜度:O(logN)排序

相關文章
相關標籤/搜索