zoukankan      html  css  js  c++  java
  • LeetCode 976. Largest Perimeter Triangle

    976. Largest Perimeter Triangle(三角形的最大周长)

    链接

    https://leetcode-cn.com/problems/largest-perimeter-triangle

    题目

    给定由一些正数(代表长度)组成的数组 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

    思路

    这题偷了个懒,直接用了自带的sort函数,之后就是一共从后向前的循环,每三个为一组,若该组可以构成三角形,返回长度,不然跳出。
    这里还有一个数学问题,为什么是连续的三个而不是中断的三个,这里假设有四个数字abcd,升序排列,先判断bcd,在判断abc,因为如果b+c<d,无法构成,那么a+c<b+c更无法构成了。

    代码

      public static int largestPerimeter(int[] A) {
        Arrays.sort(A);
        for (int i = A.length - 1; i > 1; i--) {
          if (A[i] < A[i - 1] + A[i - 2]) {
            return A[i] + A[i - 1] + A[i - 2];
          }
        }
        return 0;
      }
    
  • 相关阅读:
    eclipse常用快捷键
    Android 布局
    Android UI设计
    Android Context 是什么?
    内部类
    手写单例模式
    上课笔记:移动开发新利器-你好,Flutter
    Android Fragment
    Kotlin语言
    Android虚拟机和类加载机制
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12262863.html
Copyright © 2011-2022 走看看