题目如下:
不难,主要还是一个画边界的问题。
class Solution {
public boolean checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) { //内部
if(x1<xCenter&&xCenter<x2&&y1<yCenter&&yCenter<y2){
return true;
}
//左边界
if(x1-radius<=xCenter&&xCenter<=x1&&y1<=yCenter&&yCenter<=y2){
return true;
}
//右边界
if(x2<=xCenter&&xCenter<=x2+radius&&y1<=yCenter&&yCenter<=y2){
return true;
}
//上边界
if(y2<=yCenter&&yCenter<=y2+radius&&x1<=xCenter&&xCenter<=x2){
return true;
}
//下边界
if(y1-radius<=yCenter&&yCenter<=y1&&x1<=xCenter&&xCenter<=x2){
return true;
}
//左上角
if(distance(xCenter,yCenter,x1,y2)<=radius*radius){
return true;
}
//右上角
if(distance(xCenter,yCenter,x2,y2)<=radius*radius){
return true;
}
//右下角
if(distance(xCenter,yCenter,x2,y1)<=radius*radius){
return true;
}
//左下角
if(distance(xCenter,yCenter,x1,y1)<=radius*radius){
return true;
}
return false;
}
public long distance(int x,int y,int a,int b){
return (long)Math.pow(a-x,2)+(long)Math.pow(b-y,2);
}
}