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;
}
};