0
点赞
收藏
分享

微信扫一扫

回旋镖的数量

E_topia 2021-09-21 阅读 78
题目描述:
示例 1:
示例 2:
示例 3:
题目分析:
  1. 点i到点j的距离等于点i到点k的距离,则是一个回旋镖
  2. 需要考虑元组顺序.
思路分析:
代码实现:
class Solution {
    public int result = 0;
    public int numberOfBoomerangs(int[][] points) {
        int len = points.length;
        for (int i = 0; i < len; i++) {
            Map<Integer, Integer> map = new HashMap();
            int left_src_num = points[i][0];
            int right_src_num = points[i][1];
            for (int j = 0; j < len; j++) {
                if (i == j) continue; // 跳过同一个节点
                int left_num = points[j][0];
                int right_num = points[j][1];
                int key = (left_src_num - left_num) * (left_src_num - left_num) 
                            + (right_src_num - right_num) *  (right_src_num - right_num);
                map.put(key, map.getOrDefault(key, 0) + 1);          
            }
            for (Map.Entry<Integer, Integer> entrySet : map.entrySet()) {
                int value = entrySet.getValue();
                result += value * (value - 1); // 需要考虑元组顺序,全排列
            }
        }
        return result;
    }
}
举报

相关推荐

0 条评论