zoukankan      html  css  js  c++  java
  • 最大的三角形边长

    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)
    }
    

      

  • 相关阅读:
    extjs多文件上传的问题
    DOM操作基本用法
    js计时函数实现秒表的开始-暂停-清零功能
    CSS之美化页面
    CSS概述
    HTML5一些标签和属性
    表单
    C# 导入文件日期格式(dd/MM/yyyy)
    excel多个文件合并
    cmd git批量删除当前目录下的所有模块指定远程分支
  • 原文地址:https://www.cnblogs.com/yzg-14/p/13311341.html
Copyright © 2011-2022 走看看