less than 1 minute read

<-E 976> Largest Perimeter Triangle

// Method 1
class Solution {
public:
    int largestPerimeter(vector<int>& A) {
        sort(A.begin(), A.end());
    
        for(int i = A.size() - 1; i >= 2; i--) {
            if(A[i] < A[i-1] + A[i-2])
                return A[i] + A[i-1] + A[i-2];
        }

        return 0;
    }
};

// Method 2
class Solution {
public:
    int largestPerimeter(vector<int>& A) {
        priority_queue<int> pq(less<int>(), A);
        int a;
        int b = pq.top();
        pq.pop();
        int c = pq.top();
        pq.pop();
        do {
            a = b;
            b = c;
            
            c = pq.top();
            pq.pop();
        } while (!pq.empty() && a >= b + c);
        if (a >= b + c)
            return 0;
        return a + b + c;
    }
};