मान लीजिए हमारे पास निर्देशांक की एक सूची है। प्रत्येक निर्देशांक में दो मान x और y होते हैं, जो कार्तीय तल पर एक बिंदु का प्रतिनिधित्व करते हैं। अब किसी रेखा पर स्थित बिंदुओं की अधिकतम संख्या ज्ञात कीजिए।
इसलिए, यदि इनपुट निर्देशांक की तरह है =[[6, 2], [8, 3], [10, 4], [1, 1], [2, 2], [6, 6], [7, 7 ]], तो आउटपुट 4 होगा, क्योंकि बिंदु [1, 1], [2, 2], [6, 6], [7, 7]] हैं जो एक रेखा पर स्थित हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रेस :=0
-
मेरे लिए 0 से लेकर अंक सूची के आकार तक, करें
-
(x1, y1) :=अंक[i]
-
ढलान :=एक नया नक्शा
-
वही :=1
-
j के लिए i + 1 से लेकर अंकों के आकार तक, करें
-
(x2, y2) :=अंक[j]
-
अगर x2, x1 के समान है, तो
-
ढलान [inf] :=1 + (ढलान [inf] अगर बाहर निकलता है तो 0)
-
-
अन्यथा जब x1, x2 के समान हो और y1 y2 के समान हो, तो
-
वही :=वही + 1
-
-
अन्यथा,
-
ढलान :=(y2 - y1) /(x2 - x1)
-
ढलान [ढलान] :=1 + (ढलान [ढलान] अगर बाहर निकलता है तो 0)
-
-
-
यदि ढलान खाली नहीं है, तो
-
रेस :=अधिकतम रेस और (समान + ढलानों के सभी मूल्यों की अधिकतम सूची)
-
-
-
रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution: def solve(self, points): res = 0 for i in range(len(points)): x1, y1 = points[i][0], points[i][1] slopes = {} same = 1 for j in range(i + 1, len(points)): x2, y2 = points[j][0], points[j][1] if x2 == x1: slopes[float("inf")] = slopes.get(float("inf"), 0) + 1 elif x1 == x2 and y1 == y2: same += 1 else: slope = (y2 - y1) / (x2 - x1) slopes[slope] = slopes.get(slope, 0) + 1 if slopes: res = max(res, same + max(slopes.values())) return res ob = Solution() coordinates = [[6, 2],[8, 3],[10, 4],[1, 1],[2, 2],[6, 6],[7, 7]] print(ob.solve(coordinates))
इनपुट
[[6, 2],[8, 3],[10, 4],[1, 1],[2, 2],[6, 6],[7, 7]]
आउटपुट
4