Cho mảng nums độ dài dương. Chọn 3 giá trị làm độ dài 3 cạnh tam giác, tìm chu vi lớn nhất. Không tạo được tam giác → 0.
Ví dụ: [8,3,6,4,2,5] → sắp xếp [2,3,4,5,6,8]. Thử 8,6,5: 6+5>8 → chu vi 19.
Thuật toán giải quyết
- Sắp xếp nums tăng dần.
- Lấy 3 phần tử lớn nhất: a=pop(), b=pop(), c=pop() (a ≥ b ≥ c).
- Khi b+c ≤ a (không thỏa bất đẳng thức tam giác):
- Nếu mảng rỗng: trả về 0.
- Dịch chuyển: a=b, b=c, c=pop() (thử bộ ba tiếp theo nhỏ hơn).
- Trả về a+b+c.
Ví dụ triển khai
def solve(nums):
nums.sort()
a, b, c = nums.pop(), nums.pop(), nums.pop()
while b + c <= a:
if not nums:
return 0
a, b, c = b, c, nums.pop()
return a + b + c
nums = [8,3,6,4,2,5]
print(solve(nums))Đầu vào
[8,3,6,4,2,5]
Đầu ra
19