class Solution(object):
def numberOfBoomerangs(self, points):
"""
:type points: List[List[int]]
:rtype: int
"""
res = 0
for p in points:
dic_dist = {}
for q in points:
x_dist = p[0] - q[0]
y_dist = p[1] - q[1]
dic_dist[x_dist**2 + y_dist**2] = 1 + dic_dist.get(x_dist**2 + y_dist**2, 0)
for k in dic_dist:
res += dic_dist[k] * (dic_dist[k]-1)
return res
0,参考的代码
1,题目要求:
也就是对于一个二元列表,存在一些点,使得一个点到其他几个点(不一定是所有的)的距离是相等的。一共存在多少个这种二元(子)列表?
2,对于每个点,依次遍历计算点之间的距离,利用字典的特性记录距离相等的点的数目k,然后直接用k*k-1得到某一个点的解。最后累加的和为return。
字典的一个特点:
首先,dic.get(key, default)表示的是获得键值为key的value,如果该键值不在字典中,则返回默认值default。
其次,对于for k in dic,k依次所获得的dic中的key。
dic = {"a":1,"b":2}
for k in dic:
print k
output:
a
b