976. Largest Perimeter Triangle
Дан 整数 数组 nums. return наибольший периметр треугольника с ненулевой площадью, образованный из трех этих длин. Если невозможно образовать треугольник с ненулевой площадью, return 0.
示例:
Input: nums = [1,2,1,10]
Output: 0
Explanation:
You cannot use the side lengths 1, 1, and 2 to form a triangle.
You cannot use the side lengths 1, 1, and 10 to form a triangle.
You cannot use the side lengths 1, 2, and 10 to form a triangle.
As we cannot use any three side lengths to form a triangle of non-zero area, we return 0.
C# 解法
匹配/原始public class Solution {
public int LargestPerimeter(int[] A) {
Array.Sort(A);
for (int i = A.Length - 3; i >= 0; --i)
if (A[i] + A[i + 1] > A[i + 2])
return A[i] + A[i + 1] + A[i + 2];
return 0;
}
}
C++ 解法
自动草稿,提交前请检查#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int LargestPerimeter(vector<int>& A) {
sort(A.begin(), A.end());
for (int i = A.size() - 3; i >= 0; --i)
if (A[i] + A[i + 1] > A[i + 2])
return A[i] + A[i + 1] + A[i + 2];
return 0;
}
}
Java 解法
自动草稿,提交前请检查import java.util.*;
import java.math.*;
// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
public int LargestPerimeter(int[] A) {
Arrays.sort(A);
for (int i = A.length - 3; i >= 0; --i)
if (A[i] + A[i + 1] > A[i + 2])
return A[i] + A[i + 1] + A[i + 2];
return 0;
}
}
JavaScript 解法
匹配/原始var largestPerimeter = function(A) {
A.sort((a, b) => a - b);
for (let i = A.length - 3; i >= 0; --i)
if (A[i] + A[i + 1] > A[i + 2])
return A[i] + A[i + 1] + A[i + 2];
return 0;
};
Python 解法
匹配/原始class Solution:
def largestPerimeter(self, A: List[int]) -> int:
A.sort()
for i in range(len(A) - 3, -1, -1):
if A[i] + A[i + 1] > A[i + 2]:
return A[i] + A[i + 1] + A[i + 2]
return 0
Algorithm
Отсортируйте 数组 nums в порядке возрастания.
Для каждого elementа c в 数组е, начиная с конца: Выберите два наибольших возможных значения a и b, которые находятся перед c в отсортированном 数组е (т.е. значения, смежные с c). Проверьте, образуют ли a, b и c треугольник (题意 треугольника: a + b > c). Если образуют, return их сумму как периметр треугольника.
Если не удалось find такие значения, return 0.
😎
Vacancies for this task
活跃职位 with overlapping task tags are 已显示.