2017年12月26日 星期二

[LeetCode] 447. Number of Boomerangs

轉自LeetCode

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 iand 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)
code 如下

C++

Java

沒有留言:

張貼留言