来源
lintcode-雷达监测
描述
一个2D平面上有一堆雷达(雷达有x, y坐标,以及能探测到的范围r半径)。现在有一辆小车要从y = 0和y = 1的区间里面通过并且不能被雷达探测到。若被检测到,输出YES,否则输出NO。(可以认为,小车是一条长度为1的线段,沿直线从x = 0 向右前进)
- 雷达数量为n,n <= 1000。
- 雷达的坐标x为非负整数,y为整数,r为正整数。
样例
给出 coordinates = [[0,2]], radius = [1], 返回 “NO”。
代码语言:javascript复制解释:
在(0,2)处有个雷达,它能探测到以(0,2)为圆心,半径为1的圆形区域,小车不会被检测到。
给出 coordinates = [[0,2],[1,2]], radius = [1,2], 返回 “YES”。
代码语言:javascript复制解释:
在(0,2)处有个雷达,它能探测到以(0,2)为圆心,半径为2的圆形区域,(1,2)处的雷达能探测到以(1,2)为圆心,2为半径的圆形区域。2号雷达可以探测到小车经过。
解题思路
题目好复杂啊,其实就是判断一个圆有没有覆盖x轴.
由我们的数学知识可以知道,直接用(圆心坐标的y轴的绝对值)减去半径,如果小于等于0,则说明这个圆覆盖到了x轴.
否则则认为没有覆盖.
实现代码
代码语言:javascript复制public String radarDetection(Point[] coordinates, int[] radius) {
// Write your code here
for (int i=0;i < coordinates.length;i ){
//如果圆心的y轴绝对值减去半径小于等于0,说明被监测到,直接返回YES
if (Math.abs(coordinates[i].y) - radius[i] <= 0){
return "YES";
}
}
//如果所有圆都没有覆盖,则返回NO
return "NO";
}
//类
class Point {
int x;
int y;
Point() {
x = 0;
y = 0;
}
Point(int a, int b) {
x = a;
y = b;
}
}
完。
ChangeLog
2019-01-04 完成
以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
联系邮箱:huyanshi2580@gmail.com