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).
1 dictionary.get(key,默认值)可以得到对应这个key的value。如果指定键的值不在dic中,返回默认值
2 解题思路是:建立一个hashmap,统计到某一个点有相同distance的所有点的个数,假如个数是K,则boomerangs的个数是K*(K-1)
3 为什么要用hashmap呢?因为这里涉及到两个数,第一个是当前point,第二个是到这个点有相同距离的点的个数,而且当前point和这个个数是一一对应的关系,所以使用hashmap
4 容易有一个错误的想法:其实固定p的时候,不同q到p的距离是有很多种情况的,这里是采用距离做为key,key对应的值value就是相同距离的个数,特殊地,当value==1的时候,是不能构成boomerang的,当然1*(1-1)等于0,也就包括了这种特殊情况
5 dic[distance] = 1 + dic.get(distance, 0) 为什么要写成这样,而不是dic[distance] += 1,因为我们需要给每个key对应的值一个初始化值,所以通过dic.get(distance,0)既得到了distance相关的value,还给它初始化了值0
6 是对每一个p点,我们都需要建立一个hashmap