class Solution {
public boolean checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
int closestX = clamp(xCenter, x1, x2);
int closestY = clamp(yCenter, y1, y2);
long dx = xCenter - closestX;
long dy = yCenter - closestY;
return dx * dx + dy * dy <= (long) radius * radius;
}
private int clamp(int val, int min, int max) {
return Math.max(min, Math.min(max, val));
}
}
class Solution {
public:
bool checkOverlap(int radius, int xCenter, int yCenter,
int x1, int y1, int x2, int y2) {
int closestX = clamp(xCenter, x1, x2);
int closestY = clamp(yCenter, y1, y2);
long long dx = xCenter - closestX;
long long dy = yCenter - closestY;
return dx * dx + dy * dy <= 1LL * radius * radius;
}
private:
int clamp(int val, int minVal, int maxVal) {
return max(minVal, min(maxVal, val));
}
};