分析
好久不刷题真的思维僵化, 要考虑到这样一个结论: 如果递增的三个数 \(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;
- }
- };
来源: http://www.bubuko.com/infodetail-2919740.html