LeetCode 1453. 圆形靶内的最大飞镖数量(几何题)
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. 圆形靶内的最大飞镖数量(几何题)相关推荐
- 【数据结构与算法】之深入解析“圆形靶内的最大飞镖数量”的求解思路与算法示例
一.题目要求 墙壁上挂着一个圆形的飞镖靶,现在请你蒙着眼睛向靶上投掷飞镖.投掷到墙上的飞镖用二维平面上的点坐标数组表示,飞镖靶的半径为 r,请返回能够落在任意半径为 r 的圆形靶内或靶上的最大飞镖数. ...
- LeetCode题解(1453):圆形靶内的最大飞镖数量(Python)
题目:原题链接(困难) 标签:几何.数学 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O ( N 3 ) O(N^3) O(N3) O ( 1 ) O(1) O(1) 135 ...
- leetcode 最常见的150道前端面试题(简单题下)
本文题目选自 LeetCode 精选 TOP 面试题[1],这些题在自己和同事亲身经历中,确实遇到的几率在百分之80%以上(成都和北京的前端岗位). 本篇是简单题(下)20题左右,上半部分详见leet ...
- [LeetCode] 36. 有效的数独(java实现)模拟题
[LeetCode] 36. 有效的数独(java实现)模拟题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 1. ...
- 【LeetCode 深度优先搜索专项】不同岛屿的数量 II(711)
文章目录 1. 题目 1.1 示例 1.2 说明 1.3 提示 1.4 进阶 2. 解法一(深度优先搜索) 2.1 分析 2.2 解答 2.3 复杂度 1. 题目 给定一个 m×nm \times n ...
- 【Excel函数】计算指定单元格内的指定字符数量——COUNTIF()
函数解析: 计算指定范围内某个字符的数量,默认只能匹配数字的个数,如果想匹配文字或字母,可以引用单元格的值(单独设置一个单元格,这个单元格的内容就是你要匹配的值) 正常用法: //=COUNTIF(查 ...
- 一夜登顶GitHub!字节内网数据结构与算法刷题笔记,看完直呼卧槽
网络上流传着一句段子"程序员两条腿,一条是算法,一条是英文,想跑的更远,这两条腿都不能弱".英文,我们暂且不谈,我们先来谈谈算法. 算法之难,在于将精巧的逻辑,通过合适的数据结构, ...
- LeetCode 2146. 价格范围内最高排名的 K 样物品(BFS)
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二维整数数组 grid ,它的大小为 m x n ,表示一个商店中物品的分布图.数组中的整数含义为: 0 表示无法穿越的一堵墙. ...
- LeetCode 1560. 圆形赛道上经过次数最多的扇区
文章目录 1. 题目 2. 解题 2.1 模拟 2.2 脑筋急转弯 1. 题目 给你一个整数 n 和一个整数数组 rounds .有一条圆形赛道由 n 个扇区组成,扇区编号从 1 到 n . 现将在这 ...
最新文章
- 当对象或对象属性为空时,如何安全给对象或对象属性添加默认值
- 使用KNN模型进行多标签分类实战(Multilabel Classification)
- 四则运算表达式求值(栈的应用)
- 【热点】因这个配置错误导致全球互联网流量下降了 3.5%
- jquery中ajax格式
- 分类问题后处理技巧CAN,近乎零成本获取效果提升
- 图论 —— 生成树 —— 曼哈顿距离最小生成树
- 使用NPO依赖的一些类库文件介绍
- 2015年网络安全专家信心开始动摇
- 无缓冲I/O与有缓冲I/O区别
- 【2019杭电多校第二场1009=HDU6599】I Love Palindrome String(回文树的fail树)
- uva 12230 - Crossing Rivers(概率)
- 基于协同过滤算法和内容推荐算法实现电影推荐系统
- 红色警戒95版的地图编辑器Edwin.exe
- ☆汇总☆电力电子技术simulink仿真电路分析
- java 10的 6次方_【Java】 剑指offer(15) 数值的整数次方
- 禁不住诱惑?不可描述的应用之下暗藏巨大风险
- 作为技术人员,我是如何安排学习的
- linux 4g 拨号,4G模块Linux PPP拨号说明
- java图片改变分辨率并保存
热门文章
- Django中的核心思想ORM---元类实现ORM
- 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
- easyexcel 填充模板 格式变了_Qamp;A | 如何制作规范的电子合同模板?
- k8s 组件介绍-API Server
- AWR报告中Top 10 Foreground Events存在”reliable message”等待事件的处理办法
- js for in 遍历对象与数组
- CCCC L1-002. 打印沙漏【图形打印】
- 显示日期的指令: date
- bzoj1053: [HAOI2007]反素数ant
- HDU4859 海岸线(最小割)