加载中...
976-三角形的最大周长(Largest Perimeter Triangle)
发表于:2021-12-03 | 分类: 简单
字数统计: 556 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/largest-perimeter-triangle

英文原文

Given an integer array nums, return the largest perimeter of a triangle with a non-zero area, formed from three of these lengths. If it is impossible to form any triangle of a non-zero area, return 0.

 

Example 1:

Input: nums = [2,1,2]
Output: 5

Example 2:

Input: nums = [1,2,1]
Output: 0

Example 3:

Input: nums = [3,2,3,4]
Output: 10

Example 4:

Input: nums = [3,6,2,3]
Output: 8

 

Constraints:

  • 3 <= nums.length <= 104
  • 1 <= nums[i] <= 106

中文题目

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。

如果不能形成任何面积不为零的三角形,返回 0

 

示例 1:

输入:[2,1,2]
输出:5

示例 2:

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

示例 3:

输入:[3,2,3,4]
输出:10

示例 4:

输入:[3,6,2,3]
输出:8

 

提示:

  1. 3 <= A.length <= 10000
  2. 1 <= A[i] <= 10^6

通过代码

高赞题解

其实这个感觉最好冒泡的写法, 因为我们没必要全部把数组排序完, 再 去比较 两边之和大于第三边
冒泡排序, 每排一轮, 就会选出个最大值放在后边, 当排三轮后, 我们就可以比较了,
如果现在出现了符合三角情况的, 就直接返回, 不在排序了,
如果还没出现, 就再来一轮, 再选出个,

var largestPerimeter = function(A) {
    let arr = A;
    if (arr.length < 3) {
        return 0;
    }
    let tempExchangVal;
    let n = arr.length;
    let maxIndex = arr.length - 1;

    for (let i = 0; i < maxIndex; i++) {
        for (let j = 0; j < maxIndex - i; j++) {
            if (arr[j] > arr[j + 1]) {
                tempExchangVal = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tempExchangVal;
            }
        }
        if ( i >= 2) {
           if(arr[maxIndex - i] + arr[maxIndex - i + 1] > arr[maxIndex - i + 2]) {
                return  arr[maxIndex - i] + arr[maxIndex - i + 1] + arr[maxIndex - i + 2]
           }   
        }
    }
    if (arr[0] + arr[1] > arr[2]) {
        return arr[0] + arr[1] + arr[2];
    }
    return 0;

};
![22.png](../images/largest-perimeter-triangle-0.png)

## 统计信息
| 通过次数 | 提交次数 | AC比率 |
| :------: | :------: | :------: |
|    54941    |    91931    |   59.8%   |

## 提交历史
| 提交时间 | 提交结果 | 执行时间 |  内存消耗  | 语言 |
| :------: | :------: | :------: | :--------: | :--------: |


## 相似题目
|                             题目                             | 难度 |
| :----------------------------------------------------------: | :---------: |
| [最大三角形面积](https://leetcode-cn.com/problems/largest-triangle-area/) | 简单|
上一篇:
975-奇偶跳(Odd Even Jump)
下一篇:
977-有序数组的平方(Squares of a Sorted Array)
本文目录
本文目录