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

149. 直线上最多的点数

149. 直线上最多的点数

class MaxPoints:"""149. 直线上最多的点数https://leetcode.cn/problems/max-points-on-a-line/description/?envType=study-plan-v2&envId=top-interview-150"""def solution(self, points: List[List[int]]) -> int:"""时间复杂度 O(n^2 * log n)空间复杂度 O(log n):param points: :return: """n = len(points)if n <= 2:return nans = 0for i in range(n):if ans >= n - i or ans > n // 2:breakhm = dict()for j in range(i + 1, n):x = points[i][0] - points[j][0]y = points[i][1] - points[j][1]if x == 0:y = 1elif y == 0:x = 1else:if y < 0:x = -xy = -ygcd_xy = self.gcd(abs(x), abs(y))x /= gcd_xyy /= gcd_xy# 将x缩放20001倍,可以理解为原本相邻x1,x2的距离由 1 放大至 20001,这样 无论y取任何[0, 2×10^4]中的值,# 都可以映射到这个间隔内,保证了任意两组数(x1,y1)和 (x2,y2),只要有一个值(x1 != x2 或 y1 != y2)不同,# 那映射后的val1 和 val2 也不同val = y + x * 20001hm[val] = hm.get(val, 0) + 1max_n = 0for k, v in hm.items():max_n = max(max_n, v + 1)ans = max(ans, max_n)return ansdef gcd(self, a, b):"""求a和b的最大公约数,时间复杂度 log n:param a::param b::return:"""if b == 0:return areturn self.gcd(b, a % b)
http://www.lryc.cn/news/286708.html

相关文章:

  • 不合格机器人工程讲师再读《悉达多》-2024-
  • 【STM32CubeMX串口通信详解】USART2 -- DMA发送 + DMA空闲中断 接收不定长数据
  • Webpack5入门到原理19:React 脚手架搭建
  • 苹果眼镜(Vision Pro)的开发者指南(6)-实战应用场景开发 - 游戏、协作、空间音频、WebXR
  • flutter底层架构初探
  • 初识SQL注入
  • React初探:从环境搭建到Hooks应用全解析
  • 设计模式——1_6 代理(Proxy)
  • 性能优化(CPU优化技术)-NEON 介绍
  • Kafka-服务端-KafkaController
  • ffmpeg使用手册
  • 操作系统导论-课后作业-ch15
  • 宝塔面板SRS音视频TRC服务器启动失败
  • 04-Seata修改通信端口
  • 活动回顾丨云原生技术实践营上海站「云原生 AI 大数据」专场(附 PPT)
  • 【数据结构与算法】4.自主实现单链表的增删查改
  • Linux系统常用命令行指令
  • java SSM园林绿化管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • 【issue-halcon例程学习】edges_color.hdev
  • 设计模式—行为型模式之备忘录模式
  • CMS如何调优
  • 在PyCharm中安装GitHub Copilot插件,login之后报出如下错误:
  • L1-093 猜帽子游戏(Java)
  • JVM篇--JVM调优高频面试题
  • 微软 AD 介绍 | 安全建议 | 防护
  • React16源码: React中的reconcileChildren的源码实现
  • 幻兽帕鲁Docker服务端搭建
  • 【ARM Cortex-M 系列 1.1 -- Cortex-M33 与 M4 差异 详细介绍】
  • docker 部署及命令
  • API接口安全总结