本文主要是介绍【每日一题】447. 回旋镖的数量-2023.1.8,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
447. 回旋镖的数量
给定平面上 n
对 互不相同 的点 points
,其中 points[i] = [xi, yi]
。回旋镖 是由点 (i, j, k)
表示的元组 ,其中 i
和 j
之间的距离和 i
和 k
之间的欧式距离相等(需要考虑元组的顺序)。
返回平面上所有回旋镖的数量。
示例 1:
输入:points = [[0,0],[1,0],[2,0]] 输出:2 解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]
示例 2:
输入:points = [[1,1],[2,2],[3,3]] 输出:2
示例 3:
输入:points = [[1,1]] 输出:0
提示:
n == points.length
1 <= n <= 500
points[i].length == 2
-104 <= xi, yi <= 104
- 所有点都 互不相同
解答:
代码:
class Solution {public int numberOfBoomerangs(int[][] points) {int ans=0;for(int[] p1:points){Map<Integer,Integer> cnt=new HashMap<>();for(int[] p2:points){int d=(p1[0]-p2[0])*(p1[0]-p2[0])+(p1[1]-p2[1])*(p1[1]-p2[1]);cnt.put(d,cnt.getOrDefault(d,0)+1);}for(int x:cnt.values()){ans+=x*(x-1);}}return ans;}
}
结果:
这篇关于【每日一题】447. 回旋镖的数量-2023.1.8的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!