976. Largest Perimeter Triangle

LeetCode easy original: C# #array #csharp #easy #leetcode #sort
Task text is translated from Russian for the selected interface language. Code is left unchanged.

Дан integer array nums. return наибольший периметр треугольника с ненулевой площадью, образованный из трех этих длин. Если невозможно образовать треугольник с ненулевой площадью, return 0.

Example:

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# solution

matched/original
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++ solution

auto-draft, review before submit
#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 solution

auto-draft, review before submit
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 solution

matched/original
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 solution

matched/original
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

Отсортируйте array nums в порядке возрастания.

Для каждого elementа c в arrayе, начиная с конца: Выберите два наибольших возможных значения a и b, которые находятся перед c в отсортированном arrayе (т.е. значения, смежные с c). Проверьте, образуют ли a, b и c треугольник (Statement треугольника: a + b > c). Если образуют, return их сумму как периметр треугольника.

Если не удалось find такие значения, return 0.

😎

Vacancies for this task

Active vacancies with overlapping task tags are shown.

All vacancies
There are no active vacancies yet.