class Solution:
def largestPerimeter(self, nums: List[int]) -> int:
n = len(nums)
res = -1
for i, large in enumerate(nums):
cur = 0
for j, side in enumerate(nums):
if i != j and side <= large:
cur += side
if cur > large:
res = max(res, cur + large)
return resclass Solution:
def largestPerimeter(self, nums: List[int]) -> int:
nums.sort()
res = -1
total = 0
for num in nums:
if total > num:
res = total + num
total += num
return resclass Solution:
def largestPerimeter(self, nums: List[int]) -> int:
nums = [-num for num in nums]
heapq.heapify(nums)
total = -sum(nums)
while len(nums) > 2:
largest = -heapq.heappop(nums)
total -= largest
if largest < total:
return total + largest
return -1