leetcode-976. 三角形的最大周长

For a >= b >= c, a,b,c can form a triangle if a < b + c.

We sort the A
Try to get a triangle with 3 biggest numbers.
If A[n-1] < A[n-2] + A[n-3], we get a triangle.
If A[n-1] >= A[n-2] + A[n-3] >= A[i] + A[j], we cannot get any triangle with A[n-1]
repeat step2 and step3 with the left numbers.
    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        for (int i = A.length - 1; i > 1; --i)
            if (A[i] < A[i - 1] + A[i - 2])
                return A[i] + A[i - 1] + A[i - 2];
        return 0;
    }
    int largestPerimeter(vector<int>& A) {
        sort(A.begin(), A.end());
        for (int i = A.size() - 1 ; i > 1; --i)
            if (A[i] < A[i - 1] + A[i - 2])
                return A[i] + A[i - 1] + A[i - 2];
        return 0;
    }
    def largestPerimeter(self, A):
        A = sorted(A)[::-1]
        for i in range(len(A) - 2):
            if A[i] < A[i + 1] + A[i + 2]:
                return A[i] + A[i + 1] + A[i + 2]
        return 0

猜你喜欢

转载自blog.csdn.net/qq_39370495/article/details/86659705