python-leetcode-1037. 有效的回旋镖

1037. 有效的回旋镖 - 力扣(LeetCode)

可以通过检查三点是否共线来判断是否构成回旋镖。具体来说,给定三点 (x_1, y_1), (x_2, y_2), (x_3, y_3),如果它们不共线,就满足回旋镖的定义。

判断方法:

  1. 三点是否各不相同:确保三个点不完全相同。

  2. 三点不在一条直线上:可以通过计算向量叉积来判断:

    (x_2 - x_1) \times (y_3 - y_1) \neq (y_2 - y_1) \times (x_3 - x_1)

    若等式不成立,则说明三点不共线。

代码实现(Python):

def isBoomerang(points):
    (x1, y1), (x2, y2), (x3, y3) = points
    
    # 判断是否有重复点
    if (x1, y1) == (x2, y2) or (x1, y1) == (x3, y3) or (x2, y2) == (x3, y3):
        return False
    
    # 计算叉积判断是否共线
    return (x2 - x1) * (y3 - y1) != (y2 - y1) * (x3 - x1)

# 示例测试
print(isBoomerang([[1,1],[2,3],[3,2]]))  # True
print(isBoomerang([[1,1],[2,2],[3,3]]))  # False

复杂度分析:

  • 时间复杂度:O(1),仅进行固定次数的计算。

  • 空间复杂度:O(1),只使用常数额外空间。

这种方法高效且简洁,适用于本题要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值