Giả sử ta có mảng A các độ dài dương, ta tìm chu vi lớn nhất của tam giác diện tích không bằng 0, hình thành từ 3 độ dài này. Khi không thể tạo tam giác diện tích không bằng 0, trả về 0.
Ví dụ, nếu đầu vào [3,6,2,3], đầu ra là 8.
Giải quyết theo các bước:
- Sắp xếp list A
- a := xóa phần tử cuối A
- b := xóa phần tử cuối A
- c := xóa phần tử cuối A
- while b+c <= a, do
- if A rỗng, trả về 0
- a := b
- b := c
- c := xóa phần tử cuối A
- return a+b+c
Xem triển khai:
Ví dụ
class Solution:
def largestPerimeter(self, A):
A.sort()
a, b, c = A.pop(), A.pop(), A.pop()
while b + c <= a:
if not A:
return 0
a, b, c = b, c, A.pop()
return a + b + c
ob = Solution()
print(ob.largestPerimeter([3,6,2,3])) Đầu vào
[3,6,2,3]
Đầu ra
8