976 三角形的最大周长--重要

虽然是简单题,但是花费了自己不少时间!!

1、想用计数排序,结果还写错了,真的难受!!,最后还是用的vector的自动排序指令,sort,刚开始自己忘了!!

2、思路

排序:排序的是遍历的前提

从最右边的数遍历,三个连续的,最小的加第二小大于最大的就返回值,否则,最右边的数向左边移一位,不要再犯程序中的错误了好吗!!!

注意。一定有返回值,return 0

3、代码

 1 //之前自己没写过排序算法,今天第一次用计数排序,刚刚在上一题数组相对排序中学到的
 2 //发现了自己的错误,已经排序了!如果倒数第二个数加倒数第三个数小于最后一个数
 3 //剩下的所有都小于,所以最后一位也要移动!!!!
 4 class Solution {
 5 public:
 6     int largestPerimeter(vector<int>& A) {
 7         sort(A.begin(),A.end());
 8         if(A.size()==3) {
 9             if(A[0]+A[1]<=A[2]) return 0;
10             return A[0]+A[1]+A[2];
11         }
12         if(A.size()<3) return 0;
13         int i=A.size()-1;
14         for(;i>=2;i--){
15             if(A[i]<A[i-1]+A[i-2]){
16                 return A[i]+A[i-1]+A[i-2];
17                 break;
18             }
19         } 
20         return 0;
21     }
22 };

 

上一篇:leetcode【每日一题】976. 三角形的最大周长 java


下一篇:976. 三角形的最大周长