সমস্যা বিবরণ
প্লেনে nটি ভিন্ন পয়েন্ট দেওয়া থাকে। একটি "বুমের্যাং" হলো (i, j, k) টাপল যেখানে i থেকে j এবং i থেকে k-এর দূরত্ব সমান। মোট বুমের্যাং সংখ্যা বের করুন।
উদাহরণ
points = [[0,0],[1,0],[2,0]] → আউটপুট: 2
বুমের্যাং: ([1,0],[0,0],[2,0]) এবং ([1,0],[2,0],[0,0])।
এলগরিদম
ans = 0।- প্রতিটি
point_1কে কেন্দ্র ধরে:- অন্য সব
point_2থেকে দূরত্বের বর্গdist = (x2-x1)² + (y2-y1)²হিসাব করেdefaultdict(int)এ কাউন্ট করুন। - প্রতিটি দূরত্ব
dএর জন্য যদিnটি পয়েন্ট থাকে, তবেn * (n-1)বুমের্যাং তৈরি হয় (পারমুটেশন)। ans += n * (n-1)।
- অন্য সব
ansরিটার্ন করুন।
পাইথন বাস্তবায়ন
from collections import defaultdict
class Solution:
def numberOfBoomerangs(self, points):
ans = 0
for x1, y1 in points:
dist_count = defaultdict(int)
for x2, y2 in points:
dx = x2 - x1
dy = y2 - y1
dist = dx*dx + dy*dy
dist_count[dist] += 1
for n in dist_count.values():
ans += n * (n - 1)
return ans
ob = Solution()
print(ob.numberOfBoomerangs([[0,0],[1,0],[2,0]])) # 2
ইনপুট / আউটপুট
ইনপুট: [[0,0],[1,0],[2,0]] আউটপুট: 2