मान लीजिए कि हमारे पास समतल में n बिंदु हैं जो सभी जोड़ीवार भिन्न हैं। अब एक "बूमेरांग" (i, j, k) जैसे बिंदुओं का एक टपल है जैसे कि i और j के बीच की दूरी i और k के बीच की दूरी के समान है। हमें बुमेरांगों की संख्या ज्ञात करनी है।
इसलिए, यदि इनपुट [[0,0],[1,0],[2,0]] जैसा है, तो आउटपुट 2 होगा, क्योंकि दो बुमेरांग हैं [[1,0],[0,0] ,[2,0]] और [[1,0],[2,0],[0,0]]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
counter_of_boomerangs :=0
-
पॉइंट एरे में प्रत्येक पॉइंट_1 के लिए, करें
-
x1, y1 =बिंदु_1
-
दूरी_काउंट_डिक्ट नामक मानचित्र को परिभाषित करें
-
पॉइंट एरे में प्रत्येक पॉइंट_2 के लिए, करें
-
x2, y2 =बिंदु_2
-
diff_x :=x2 - x1
-
diff_y:=y2 - y1
-
जिला :=diff_x^2 + diff_y^2
-
डिस्टेंस_काउंट_डिक्ट [जिला]:=डिस्टेंस_काउंट_डिक्ट [जिला] + 1पी>
-
-
दूरी_काउंट_डिक्ट में प्रत्येक d के लिए -
-
n:=दूरी_काउंट_डिक्ट [डी]
-
counter_of_boomerangs :=counter_of_boomerangs + n * (n - 1)
-
-
-
वापसी काउंटर_ऑफ़_बूमेरांग्स
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import defaultdict class Solution: def numberOfBoomerangs(self, points): counter_of_boomerangs = 0 for point_1 in points: x1, y1 = point_1 distance_count_dict = defaultdict( int ) for point_2 in points: x2, y2 = point_2 diff_x = x2-x1 diff_y = y2-y1 dist = diff_x ** 2 + diff_y ** 2 distance_count_dict[ dist ] += 1 for d in distance_count_dict: n = distance_count_dict[d] counter_of_boomerangs += n * (n-1) return counter_of_boomerangs ob = Solution() print(ob.numberOfBoomerangs([[0,0],[1,0],[2,0]]))
इनपुट
[[0,0],[1,0],[2,0]]
आउटपुट
0