1. 题目

墙壁上挂着一个圆形的飞镖靶。现在请你蒙着眼睛向靶上投掷飞镖。

投掷到墙上的飞镖用二维平面上的点坐标数组表示。飞镖靶的半径为 r 。

请返回能够落在 任意 半径为 r 的圆形靶内或靶上的最大飞镖数

示例 1:

输入:points = [[-2,0],[2,0],[0,2],[0,-2]], r = 2
输出:4
解释:如果圆形的飞镖靶的圆心为 (0,0) ,半径为 2 ,
所有的飞镖都落在靶上,此时落在靶上的飞镖数最大,值为 4 。

示例 2:

输入:points = [[-3,0],[3,0],[2,6],[5,4],[0,9],[7,8]], r = 5
输出:5
解释:如果圆形的飞镖靶的圆心为 (0,4) ,半径为 5 ,
则除了 (7,8) 之外的飞镖都落在靶上,此时落在靶上的飞镖数最大,值为 5 。示例 3:
输入:points = [[-2,0],[2,0],[0,2],[0,-2]], r = 1
输出:1示例 4:
输入:points = [[1,2],[3,5],[1,-1],[2,3],[4,1],[1,3]], r = 2
输出:4提示:
1 <= points.length <= 100
points[i].length == 2
-10^4 <= points[i][0], points[i][1] <= 10^4
1 <= r <= 5000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-number-of-darts-inside-of-a-circular-dartboard
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {double cx, cy;//圆心坐标
public:int numPoints(vector<vector<int>>& points, int r) {int x1, x2, y1, y2;double dx, dy;int i, j, k, count, maxcount=1, n = points.size();for(i = 0; i < n; ++i){x1 = points[i][0];y1 = points[i][1];for(j = i+1; j < n; ++j)//i,j为圆上的点{if(i == j)continue;x2 = points[j][0];y2 = points[j][1];count = 2;int d_d = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);if(d_d > 4*r*r) continue;count = 0;cx = (x1+x2)/2.0-(y2-y1)*sqrt((r*r-d_d/4.0)/d_d), cy = (y1+y2)/2.0+(x2-x1)*sqrt((r*r-d_d/4.0)/d_d);for(k = 0; k < n; ++k){dx = points[k][0]-cx;dy = points[k][1]-cy;if(dx*dx+dy*dy <= r*r)count++;}maxcount = max(maxcount, count);count = 0;cx = (x1+x2)/2.0+(y2-y1)*sqrt((r*r-d_d/4.0)/d_d), cy = (y1+y2)/2.0-(x2-x1)*sqrt((r*r-d_d/4.0)/d_d);for(k = 0; k < n; ++k){dx = points[k][0]-cx;dy = points[k][1]-cy;if(dx*dx+dy*dy <= r*r)count++;}maxcount = max(maxcount, count);}}return maxcount;}
};

52 ms 8 MB

LeetCode 1453. 圆形靶内的最大飞镖数量(几何题)相关推荐

  1. 【数据结构与算法】之深入解析“圆形靶内的最大飞镖数量”的求解思路与算法示例

    一.题目要求 墙壁上挂着一个圆形的飞镖靶,现在请你蒙着眼睛向靶上投掷飞镖.投掷到墙上的飞镖用二维平面上的点坐标数组表示,飞镖靶的半径为 r,请返回能够落在任意半径为 r 的圆形靶内或靶上的最大飞镖数. ...

  2. LeetCode题解(1453):圆形靶内的最大飞镖数量(Python)

    题目:原题链接(困难) 标签:几何.数学 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O ( N 3 ) O(N^3) O(N3) O ( 1 ) O(1) O(1) 135 ...

  3. leetcode 最常见的150道前端面试题(简单题下)

    本文题目选自 LeetCode 精选 TOP 面试题[1],这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位). 本篇是简单题(下)20题左右,上半部分详见leet ...

  4. [LeetCode] 36. 有效的数独(java实现)模拟题

    [LeetCode] 36. 有效的数独(java实现)模拟题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 1. ...

  5. 【LeetCode 深度优先搜索专项】不同岛屿的数量 II(711)

    文章目录 1. 题目 1.1 示例 1.2 说明 1.3 提示 1.4 进阶 2. 解法一(深度优先搜索) 2.1 分析 2.2 解答 2.3 复杂度 1. 题目 给定一个 m×nm \times n ...

  6. 【Excel函数】计算指定单元格内的指定字符数量——COUNTIF()

    函数解析: 计算指定范围内某个字符的数量,默认只能匹配数字的个数,如果想匹配文字或字母,可以引用单元格的值(单独设置一个单元格,这个单元格的内容就是你要匹配的值) 正常用法: //=COUNTIF(查 ...

  7. 一夜登顶GitHub!字节内网数据结构与算法刷题笔记,看完直呼卧槽

    网络上流传着一句段子"程序员两条腿,一条是算法,一条是英文,想跑的更远,这两条腿都不能弱".英文,我们暂且不谈,我们先来谈谈算法. 算法之难,在于将精巧的逻辑,通过合适的数据结构, ...

  8. LeetCode 2146. 价格范围内最高排名的 K 样物品(BFS)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二维整数数组 grid ,它的大小为 m x n ,表示一个商店中物品的分布图.数组中的整数含义为: 0 表示无法穿越的一堵墙. ...

  9. LeetCode 1560. 圆形赛道上经过次数最多的扇区

    文章目录 1. 题目 2. 解题 2.1 模拟 2.2 脑筋急转弯 1. 题目 给你一个整数 n 和一个整数数组 rounds .有一条圆形赛道由 n 个扇区组成,扇区编号从 1 到 n . 现将在这 ...

最新文章

  1. 当对象或对象属性为空时,如何安全给对象或对象属性添加默认值
  2. 使用KNN模型进行多标签分类实战(Multilabel Classification)
  3. 四则运算表达式求值(栈的应用)
  4. 【热点】因这个配置错误导致全球互联网流量下降了 3.5%
  5. jquery中ajax格式
  6. 分类问题后处理技巧CAN,近乎零成本获取效果提升
  7. 图论 —— 生成树 —— 曼哈顿距离最小生成树
  8. 使用NPO依赖的一些类库文件介绍
  9. 2015年网络安全专家信心开始动摇
  10. 无缓冲I/O与有缓冲I/O区别
  11. 【2019杭电多校第二场1009=HDU6599】I Love Palindrome String(回文树的fail树)
  12. uva 12230 - Crossing Rivers(概率)
  13. 基于协同过滤算法和内容推荐算法实现电影推荐系统
  14. 红色警戒95版的地图编辑器Edwin.exe
  15. ☆汇总☆电力电子技术simulink仿真电路分析
  16. java 10的 6次方_【Java】 剑指offer(15) 数值的整数次方
  17. 禁不住诱惑?不可描述的应用之下暗藏巨大风险
  18. 作为技术人员,我是如何安排学习的
  19. linux 4g 拨号,4G模块Linux PPP拨号说明
  20. java图片改变分辨率并保存

热门文章

  1. Django中的核心思想ORM---元类实现ORM
  2. 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
  3. easyexcel 填充模板 格式变了_Qamp;A | 如何制作规范的电子合同模板?
  4. k8s 组件介绍-API Server
  5. AWR报告中Top 10 Foreground Events存在”reliable message”等待事件的处理办法
  6. js for in 遍历对象与数组
  7. CCCC L1-002. 打印沙漏【图形打印】
  8. 显示日期的指令: date
  9. bzoj1053: [HAOI2007]反素数ant
  10. HDU4859 海岸线(最小割)