Задачи
November 14

Задача. Треугольник с наибольшим периметром

Дан массив натуральных чисел nums, размер массива от 3 до 10^4. Необходимо вернуть наибольший периметр треугольника (> 0), образованный из трех таких длин. Если это невозможно, верните 0.

Примеры:

  1. nums = [2,1,2]
    Output: 5
  2. nums = [1,2,1]
    Output: 0

Разбор

Вспоминаем школьный курс геометрии. Чтобы получить треугольник, необходимо, чтобы сумма любых двух сторон была больше длины третьей. В нашей задаче необходимо найти треугольник с наибольшим периметром, поэтому отсортируем исходный массив для удобства поиска.

Далее запустим цикл по тройкам элементов с конца и будем искать первую тройку, которая удовлетворяет условию (a + b) > c, в противном случае вернем 0.

Детали реализации смотрите ниже.

Реализация

Play-test

https://dotnetfiddle.net/yJLHNh