Python3解leetcode Number of Boomerangs
问题描述:
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]]
思路:主要学习np.unique()-去重并排序,同时根据return_counts参数可以确定各个元素的个数,squareform()-将点之间距离在简洁和冗余模式相互转化,pdist()-求点之间距离,等函数的应用
代码:
1 import numpy as np 2 from numpy import * 3 from scipy.spatial.distance import pdist, squareform 4 5 class Solution: 6 def numberOfBoomerangs(self, points: List[List[int]]) -> int: 7 a = squareform(pdist(np.array(points))) 8 9 10 result = 0 11 for i in a:#遍历每一行 12 count = np.unique(i,return_counts=True)[1] 13 result += sum(count*(count - 1)) 14 15 16 return result