leetcode976之三角形最大周长
题目描述:
给定由一些正数(代表长度)组成的数组 A
,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0
。
1 def largePara(A): 2 A.sort(reverse=True) 3 for i in range(len(A) - 2): 4 if A[i] < A[i + 1] + A[i + 2]: 5 return A[i] + A[i + 1] + A[i + 2] 6 7 return 0 8 9 10 print('-----------测试largepara()------------') 11 A = [3, 6, 2, 3] 12 l = largePara(A) 13 print('l=', l) 14 15 16 def largepara1(A): 17 A.sort(reverse=True) 18 for i in range(len(A) - 2): 19 res = 0 20 if A[i] < A[i + 1] + A[i + 2]: 21 res = A[i] + A[i + 1] + A[i + 2] 22 break 23 24 return res 25 26 27 print('===========测试largepara1()============') 28 cic = largepara1(A) 29 print("circu=", cic) 30 31 32 def largePara2(A): 33 ''' 34 while 循环实现,减少时空复杂度 35 :param A: 36 :return: 37 ''' 38 i = 0 39 A.sort(reverse=True) 40 while i < len(A) - 2: 41 if A[i] < A[i + 1] + A[i + 2]: return A[i] + A[i + 1] + A[i + 2] 42 i = i + 1 43 return 0 44 45 46 print('_______-测试largePara()__________') 47 circu = largePara2(A) 48 print('circu=', circu) 49 50 51 def largePara3(A): 52 def istriangle(a, b, c): 53 if a + b > c and a + c > b and b + c > a: 54 return True 55 else: 56 return False 57 58 A.sort(reverse=True) 59 for i in range(len(A) - 2): 60 if istriangle(A[i], A[i + 1], A[i + 2]): 61 return A[i] + A[i + 1] + A[i + 2] 62 63 return 0 64 65 66 print("*************测试largePara3(A)***********") 67 L = largePara3(A) 68 print("L=", L)
输出:
-----------测试largepara()------------ l= 8 ===========测试largepara1()============ circu= 8 _______-测试largePara()__________ circu= 8 *************测试largePara3(A)*********** L= 8