当前位置: 首页 > news >正文

经典算法实例:有效的回旋镖

我们先来看题目描述:

给定一个数组 points ,其中 points [ i ] = [ xi, yi ] 表示 X-Y 平面上的一个点,如果这些点构成一个回旋镖则返回 true 。

回旋镖定义为一组三个点,这些点各不相同且不在一条直线上 。

示例 1 :

输入:points = [[1,1],[2,3],[3,2]] 输出:true

示例 2 :

输入:points = [[1,1],[2,2],[3,3]] 输出:false

提示:

  • points.length == 3
  • points[i].length == 2
  • 0 <= xi, yi <= 100

解决方案

方法:向量叉乘

思路和算法计算从 points [0] 开始,分别指向 points [1] 和 points [2] 的向量 V1 和 V2 。「三点各不相同且不在一条直线上」等价于「这两个向量的叉乘结果不为零」:v1 + v2 ≠ 0

代码

Python3

class Solution: def isBoomerang(self, points: List[List[int]]) -> bool: v1 = (points[1][0] - points[0][0], points[1][1] - points[0][1]) v2 = (points[2][0] - points[0][0], points[2][1] - points[0][1]) return v1[0] * v2[1] - v1[1] * v2[0] != 0

C++

class Solution { public: bool isBoomerang(vector<vector<int>>& points) { vector<int> v1 = {points[1][0] - points[0][0], points[1][1] - points[0][1]}; vector<int> v2 = {points[2][0] - points[0][0], points[2][1] - points[0][1]}; return v1[0] * v2[1] - v1[1] * v2[0] != 0; } };

Java

class Solution { public boolean isBoomerang(int[][] points) { int[] v1 = {points[1][0] - points[0][0], points[1][1] - points[0][1]}; int[] v2 = {points[2][0] - points[0][0], points[2][1] - points[0][1]}; return v1[0] * v2[1] - v1[1] * v2[0] != 0; } }

复杂度分析

时间复杂度: O(1) 。

空间复杂度: O(1) 。

http://www.jsqmd.com/news/1090947/

相关文章:

  • 基于 eBPF + io_uring 的高性能用户态 TCP 存储引擎设计
  • 规则即代码——用 Rules 让 AI 自动遵守团队规范
  • 猫抓浏览器扩展:视频资源嗅探与下载的终极解决方案
  • 无线安全实战:利用Wifite自动化破解WEP加密网络
  • Selenium相关习题
  • 卷疯了!这款 macOS 神器一个顶五个:截图 + 录屏 + 取色 + 贴图 + 右键增强,还完全免费开源
  • 3分钟快速解密:RPG Maker MV资源提取工具让游戏素材轻松解锁
  • FreeRTOS源码详解(六)—— 任务切换
  • 天辛大师漫谈AI时代的境界修养,文科生的持续学习
  • 别让AI每天从零开始:一个研发老兵的Skills沉淀实操指南
  • 【Netty源码解读和权威指南】第81篇:Netty Codec框架源码解析——编解码器是如何设计的
  • dxwrapper终极指南:让Windows 10/11完美运行经典老游戏的技术方案
  • 企业文件怎么加密防泄漏?5款小白都能用的企业加密软件分享,内行人推荐
  • FreeRTOS源码详解(十一)——Alarm
  • Windows风扇控制终极指南:Fan Control如何帮你告别噪音烦恼
  • HS2-HF Patch:深度解析Honey Select 2终极增强方案的技术架构与高级应用
  • 装了这个插件,哔哩哔哩网页版真好用~
  • 软件测试面试全攻略:1000+真题解析与实战技巧
  • 程序员开国际技术会议,2026年3款英汉互译在线工具哪个实用?
  • Codex在win11下安装并设置Mimo的代理
  • Open Harmony 能力增强:main_pages.json 页面注册机制解析
  • 深耕复古不踩坑!冰雪传奇点卡版真实还原经典雪域开荒玩法
  • 终极指南:3步使用Untrunc免费修复损坏的MP4视频文件
  • Web安全实战:从文件上传到SSRF,DVWA靶场漏洞复现与防御指南
  • 笔试强训 Day 15:平方数 + 分组 + 拓扑排序
  • 【JAVA毕设源码分享】基于springboot智能垃圾分类系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 循环的跳出
  • C语言工具的安装(DEV-C++)
  • Windows11 2026 年 6 月 23 日 — KB5095093
  • 欧洲41.5度热浪的残酷警示:技术韧性是数字基建的最后一道防线