मान लीजिए कि हमारे पास एक विमान पर बिंदुओं की एक सूची है। हमें सबसे बड़े त्रिभुज का क्षेत्रफल ज्ञात करना है जो कि किसी भी 3 बिंदुओं से बन सकता है।
इसलिए, यदि इनपुट [[0,0], [0,1], [1,0], [0,2], [2,0]] जैसा है, तो आउटपुट 2
होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- res :=0
- N :=अंक सूची का आकार
- मैं के लिए 0 से एन -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