Given n points in the plane that are all pairwise distinct, a "boomerang" is a tuple of points (i, j, k) such that the distance between i and j equals the distance between i and k (the order of the tuple matters).
Find the number of boomerangs. You may assume that n will be at most 500 and coordinates of points are all in the range [-10000, 10000] (inclusive).
Example:
Input: [[0,0],[1,0],[2,0]] Output: 2 Explanation: The two boomerangs are [[1,0],[0,0],[2,0]] and [[1,0],[2,0],[0,0]]<Solution>
解題想法(參考資料)
- 計算每個點到其他點的距離,並將這個距離當作 key 存到 hashmap
- 對於每個 key,也就是一個特定的距離,不重複選兩個即為 Pn 取 2 = n!/ (n-2)! = n * (n-1)
- 複雜度為O(N^2)
C++
Java
沒有留言:
張貼留言