Sort descending and return the first consecutive triple satisfying the triangle inequality; no later triple can have a larger perimeter.
Complexity
O(n log n) time and language-dependent sorting space.
Find the largest perimeter of a non-degenerate triangle constructible from three lengths.
Sort descending and return the first consecutive triple satisfying the triangle inequality; no later triple can have a larger perimeter.
O(n log n) time and language-dependent sorting space.
package main
import "sort"
func largestPerimeter(nums []int) int {
sort.Sort(sort.Reverse(sort.IntSlice(nums)))
for index := 0; index+2 < len(nums); index++ {
if nums[index+1]+nums[index+2] > nums[index] {
return nums[index] + nums[index+1] + nums[index+2]
}
}
return 0
}
class Solution:
def largestPerimeter(self, nums: list[int]) -> int:
nums.sort(reverse=True)
for first, second, third in zip(nums, nums[1:], nums[2:]):
if second + third > first: return first + second + third
return 0
function largestPerimeter(nums: number[]): number {
nums.sort((left, right) => right - left);
for (let index = 0; index + 2 < nums.length; index += 1) if (nums[index + 1] + nums[index + 2] > nums[index]) return nums[index] + nums[index + 1] + nums[index + 2];
return 0;
}