码迷,mamicode.com
首页 > 编程语言 > 详细

976. 三角形的最大周长(冒泡排序法的活用)

时间:2019-11-04 11:52:33      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:别人   src   比较   strong   solution   tmp   ret   for   alt   

在刷这道题时,受到别人的启发,并在其基础上改进了一下。

1.三边构成三角形的充分必要条件是:较小的两边之和大于第三边

2.用Arrays.sort(),时间复杂度为O(n2

3.在这里用冒泡排序法,最好的结果就排序3趟,时间为3n,最坏的结果n2

4.冒泡排序法中,当某一趟没有交换时,排序完成。这里照搬过来,但是不能直接退出循环,还是要继续比较是否为三角形。

 

 1 class Solution {
 2     public int largestPerimeter(int[] A) {
 3         Arrays.sort(A);
 4         for(int i = A.length-1; i >= 2; i--){
 5             if( (A[i-1] + A[i -2] > A[i])  )
 6                return A[i] + A[i-1] + A[i-2];
 7         }
 8          return 0;
 9     }
10 }

用冒泡排序法改进后:

技术图片

 1 class Solution {
 2     public int largestPerimeter(int[] A) {
 3         boolean mark = true;
 4         for(int i = 1; i < A.length; i++){
 5             if(mark){
 6                 mark = false;
 7                 for(int j = 0; j < A.length - i; j++){
 8                     if(A[j+1] < A[j]){
 9                         int tmp = A[j];
10                         A[j] = A[j+1];
11                         A[j+1] = tmp;
12                         mark = true;
13                     }
14                 }
15             }
16             
17             if(i>=3){
18                 if(A[A.length-i] + A[A.length-i+1] > A[A.length-i+2] )
19                     return A[A.length-i] + A[A.length-i+1] + A[A.length-i+2];
20             }
21         }
22         
23         if(A[0] + A[1] >A[2]) return A[0] + A[1] + A[2];
24         else return 0;
25     }
26 }

 

976. 三角形的最大周长(冒泡排序法的活用)

标签:别人   src   比较   strong   solution   tmp   ret   for   alt   

原文地址:https://www.cnblogs.com/leechee9/p/11790853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!