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
原文地址:https://www.cnblogs.com/rounie/p/13026635.html