欢迎光临散文网 会员登陆 & 注册

枚举+哈希表

2021-09-13 19:44 作者:剑离我离  | 我要投稿

//447 回旋镖的数量

排列数问题,三个点构成回旋镖,全局来说,只需要得到相同距离的有几个,即可进行处理了。

 public int numberOfBoomerangs(int[][] points) {        int ans = 0;        for (int[] p : points) {            Mapcnt = new HashMap();            for (int[] q : points) {                int dis = (p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1]); //处理距离 其实不用在意点的位置 只需要得出【距离】这个信息即可                cnt.put(dis, cnt.getOrDefault(dis, 0) + 1); //封装进map中            }            for (Map.Entryentry : cnt.entrySet()) {                int m = entry.getValue();                ans += m * (m - 1);//排列数 Am2 从m个数中取出两个数            }        }        return ans;    }

枚举+哈希表的评论 (共 条)

分享到微博请遵守国家法律