给定一些正数(代表长度)组成的数组arr,返回由其中三个
长度组成的面积不为0的三角形的最大周长。
如果不能组成三角形,返回0.
- 三角形满足条件:a+b>c且a+c>b且b+c>a
- 贪心算法
- 先排序(升序)
- 从后往前选三个数,看是否满足三角形条件
package main
import (
"fmt"
"sort"
)
func largestPerimeter(nums []int)int{
sort.Ints(nums)
for i:=len(nums)-1; i>=2; i--{
// 不满足则说明nums[i]有点大,要小一些,所以往前找
if nums[i-1]+nums[i-2] > nums[i]{
return nums[i-1]+nums[i-2]+nums[i]
}
}
return 0
}
func main(){
var nums = []int{3,6,2,3}
fmt.Println(largestPerimeter(nums))
}