1. 程式人生 > >「Leetcode」976. Largest Perimeter Triangle(C++)

「Leetcode」976. Largest Perimeter Triangle(C++)

mat break triangle size 大於 不能 clas angle largest

分析

好久不刷題真的思維僵化,要考慮到這樣一個結論:如果遞增的三個數\(x_i,x_{i+1},x_{i+2}\)不符合題意,那麽最大的兩邊之差一定大於等於第一條邊,那麽任何比第一條邊小的都不能成立。這樣一來,遞增排序,然後線性找就可以了。

代碼

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

「Leetcode」976. Largest Perimeter Triangle(C++)