ধরুন আমাদের একটি সমতলে পয়েন্টের তালিকা আছে। আমাদের সবচেয়ে বড় ত্রিভুজটির ক্ষেত্রফল খুঁজে বের করতে হবে যেটি বিন্দুর যেকোনো 3 দ্বারা গঠিত হতে পারে।
সুতরাং, যদি ইনপুটটি [[0,0],[0,1],[1,0],[0,2],[2,0]] এর মত হয়, তাহলে আউটপুট হবে 2
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- res :=0
- N :=পয়েন্ট তালিকার আকার
- আমি 0 থেকে N - 2 রেঞ্জের জন্য, কর
- i + 1 থেকে N - 1 পর্যন্ত j-এর জন্য
- করুন
- i + 2 থেকে N রেঞ্জে k এর জন্য
- করুন
- (x1, y1) :=পয়েন্ট[i],
- (x2, y2) :=পয়েন্ট[j],
- (x3, y3) :=পয়েন্ট[k]
- res :=res এর সর্বোচ্চ, 0.5 * |x1 *(y2 - y3) + x2 *(y3 - y1) + x3 *(y1 - y2)
- করুন
- করুন
- রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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