976. Largest Perimeter Triangle

思路:
排序后贪心
对所有nums里的元素进行排序,然后从后向前遍历,因为已经从小到大排序了,那么我们直接取最后三个数进行判断,即nums[i]<nums[i-1]+nums[i-2]是否满足,如果满足就break输出,因为是从最大的取,所以满足那一定是最大的周长,否则i-1,从倒数第二个开始,继续上述判断。因为i-1,i-2都不行其他的肯定也不会满足。所以直接i-1选新的最大边进行判断。

代码:

class Solution {
public:
    int largestPerimeter(vector<int>& nums) {
        int n=nums.size();
        sort(nums.begin(),nums.end());
        int res=0;
        for(int i=n-1;i>=2;--i){
            if(nums[i-1]+nums[i-2]>nums[i]) {res=nums[i]+nums[i-1]+nums[i-2]; break;}
            else continue;
        }
        return res;
    }
};
posted @ 2021-04-14 16:49  Mrsdwang  阅读(27)  评论(0编辑  收藏  举报