leetcode之Number of Boomerangs(447)

本文介绍了一种计算平面上特定几何结构——回旋镖数量的方法。通过使用Python编程语言,我们实现了两种算法,一种是基本算法,另一种是利用Python内置函数优化后的算法。示例展示了如何对给定点集进行回旋镖数量的计算。
部署运行你感兴趣的模型镜像

题目:

给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。

找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间[-10000, 10000] 中。

示例:

输入:
[[0,0],[1,0],[2,0]]

输出:
2

解释:
两个回旋镖为 [[1,0],[0,0],[2,0]][[1,0],[2,0],[0,0]]

python代码1:

class Solution:
    def numberOfBoomerangs(self, points):
        res = 0
        for x1,y1 in points:
            map_dict = {}
            for x2,y2 in points:
                if (x1-x2)**2 + (y1-y2)**2 in map_dict:
                    map_dict[(x1-x2)**2 + (y1-y2)**2] += 1
                else:
                    map_dict[(x1-x2)**2 + (y1-y2)**2] = 1
            for d in map_dict.values():
                res += d*(d-1)
        return res

python代码2:(代码1升级版)

class Solution(object):
    def numberOfBoomerangs(self, points):
        res = 0
        for x1,y1 in points:
            Dict = collections.defaultdict(int)
            for x2,y2 in points:
                Dict[(x1-x2)**2 + (y1-y2)**2] += 1
            for d in Dict.values():
                    res += d * (d-1)
        return res

心得:能用python的内置函数最好要用,实际情况下内置函数更省时间,代码2的用时是代码1的1/3.

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值