虽然是简单题,但是花费了自己不少时间!!
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 };