前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[随缘一题]雷达监测

[随缘一题]雷达监测

作者头像
呼延十
发布2019-07-01 16:53:50
1.2K0
发布2019-07-01 16:53:50
举报
文章被收录于专栏:呼延呼延呼延

来源

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”。

解释:
在(0,2)处有个雷达,它能探测到以(0,2)为圆心,半径为1的圆形区域,小车不会被检测到。

给出 coordinates = [[0,2],[1,2]], radius = [1,2], 返回 “YES”。

解释:
在(0,2)处有个雷达,它能探测到以(0,2)为圆心,半径为2的圆形区域,(1,2)处的雷达能探测到以(1,2)为圆心,2为半径的圆形区域。2号雷达可以探测到小车经过。

解题思路

题目好复杂啊,其实就是判断一个圆有没有覆盖x轴.

由我们的数学知识可以知道,直接用(圆心坐标的y轴的绝对值)减去半径,如果小于等于0,则说明这个圆覆盖到了x轴.

否则则认为没有覆盖.

实现代码

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


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 来源
  • 描述
  • 样例
  • 解题思路
  • 实现代码
    • ChangeLog
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档