首页 > 其他 > 详细

最大的三角形边长

时间:2020-07-16 10:20:56      阅读:59      评论:0      收藏:0      [点我收藏+]
package main

import (
	"fmt"
	"sort"
)

func largestPerimeter(A []int) int {

	sort.Ints(A)
	if len(A) >= 3 {
		// 等于3
		if len(A) == 3 {
			if A[0]+A[1] > A[2] {
				return A[0] + A[1] + A[2]
			} else if A[0]+A[1] <= A[2] {
				return 0
			}
			// len大于3
		} else {
			for j := 0; j < len(A); j++ { //大边

				for i := j; i < len(A)-1; i++ { // 2边

					for k := j; k < len(A)-2; k++ { // 3边

						// 两边之和大于第三边
						// IntSlice 已经实现了三个Len()、Less(i, j int)、Swap(i, j int) 方法
						/*
							type IntSlice []int

							func (p IntSlice) Len() int           { return len(p) }
							func (p IntSlice) Less(i, j int) bool { return p[i] < p[j] }
							func (p IntSlice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }

							// Sort is a convenience method.
							func (p IntSlice) Sort() { Sort(p) }
						*/
						sort.Sort(sort.Reverse(sort.IntSlice(A)))
						if A[i+1]+A[k+2] > A[j] {
							return A[i+1] + A[k+2] + A[j]
						}
					}
				}
			}
		}
	}
	// 默认return
	return 0
}

func main() {
	/*
		给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
		如果不能形成任何面积不为零的三角形,返回 0。
		示例 1:
		输入:[2,1,2]
		输出:5

		示例 2:
		输入:[1,2,1]
		输出:0

		示例 3:
		输入:[3,2,3,4]
		输出:10
	*/
	var s = []int{3, 6, 2, 1, 0, 0, 0, 0}
	res := largestPerimeter(s)
	fmt.Println(res)
}

  

最大的三角形边长

原文:https://www.cnblogs.com/yzg-14/p/13311341.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!