【题目描述】
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0。
【示例1】
输入:[2,1,2]
输出:5
【示例2】
输入:[1,2,1]
输出:0
【示例3】
输入:[3,2,3,4]
输出:10
【示例4】
输入:[3,6,2,3]
输出:8
【提示】
3 <= A.length <= 10000
1 <= A[i] <= 10^6
1、形成三角形的条件:任意两条边之和大于第三条边
思路:
- 数组从大到小排序
- index从2开始,只要满足 arr[index]+arr[index-1]>arr[index-2]即可
代码实现:
func largestPerimeter(_ A: [Int]) -> Int {
var tmp = A.sorted(by: >)
for i in 2..<tmp.count {
if tmp[i] + tmp[i-1] > tmp[i-2] {
return tmp[i]+tmp[i-1]+tmp[i-2]
}
}
return 0
}
这个看看就行啦,哈哈哈
func largestPerimeter(_ A: [Int]) -> Int {
var tmp = A.sorted()
var arr = [Int]()
for i in 0..<tmp.count {
if i+2 < tmp.count {
if tmp[i]+tmp[i+1] > tmp[i+2] && tmp[i+1]+tmp[i+2] > tmp[i] && tmp[i]+tmp[i+2] > tmp[i+1] {
arr.append(tmp[i]+tmp[i+1]+tmp[i+2])
}
}
}
if arr.count > 0 {
return arr.max()!
}
return 0
}