สมมติว่าเรามีรายการคะแนนบนเครื่องบิน เราต้องหาพื้นที่ของสามเหลี่ยมที่ใหญ่ที่สุดที่สามารถเกิดขึ้นได้จากจุดใดก็ได้ 3 จุด
ดังนั้น หากอินพุตเป็น [[0,0],[0,1],[1,0],[0,2],[2,0]] เอาต์พุตจะเป็น 2
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- res :=0
- N :=ขนาดของรายการคะแนน
- สำหรับฉันในช่วง 0 ถึง N - 2 ให้ทำ
- สำหรับ j ในช่วง i + 1 ถึง N - 1 ทำ
- สำหรับ k ในช่วง i + 2 ถึง N ทำ
- (x1, y1) :=คะแนน[i],
- (x2, y2) :=คะแนน[j],
- (x3, y3) :=คะแนน[k]
- res :=สูงสุดของความละเอียด 0.5 * |x1 *(y2 - y3) + x2 *(y3 - y1) + x3 *(y1 - y2)
- สำหรับ k ในช่วง i + 2 ถึง N ทำ
- สำหรับ j ในช่วง i + 1 ถึง N - 1 ทำ
- ผลตอบแทน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def largestTriangleArea(self, points): res = 0 N = len(points) for i in range(N - 2): for j in range(i + 1, N - 1): for k in range(i + 2, N): (x1, y1), (x2, y2), (x3, y3) = points[i],points[j],points[k] res = max(res, 0.5 * abs(x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2))) return res ob = Solution() print(ob.largestTriangleArea([[0,0],[0,1],[1,0],[0,2],[2,0]]))
อินพุต
[[0,0],[0,1],[1,0],[0,2],[2,0]]
ผลลัพธ์
2.0