day-03 回旋镖的数量

在这里插入图片描述
思路:
用map集合记录相同距离的组合数,HashMap<Integer,Integer>,前一个值表示距离,后一个值表示组合数

解题方法:
用两次for循环,记录相同距离的组合数,统计出总的可行组合数,组合数*2即为答案

class Solution {
    public int numberOfBoomerangs(int[][] points) {
        int ans=0;
        for(int []p:points){
             HashMap<Integer,Integer> hashMap=new HashMap<>();
            for(int []q:points){
                if(p[0]==q[0]&&p[1]==q[1]) continue;
                int dis=(p[0]-q[0])*(p[0]-q[0])+(p[1]-q[1])*(p[1]-q[1]);
                int num=hashMap.getOrDefault(dis,0);
                ans=ans+num;
                hashMap.put(dis,num+1);
            }
        }
        return ans*2;
    }
    
}

注:本来暴力的,结果时间超时,看了答案,恍然大悟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值