1401 圓和矩形是否有重疊

2021-10-12 12:39:18 字數 1877 閱讀 5732

題目描述:

給你乙個以 (radius, x_center, y_center) 表示的圓和乙個與座標軸平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的座標,(x2, y2) 是右上角的座標。

如果圓和矩形有重疊的部分,請你返回 true ,否則返回 false 。

換句話說,請你檢測是否 存在 點 (xi, yi) ,它既在圓上也在矩形上(兩者都包括點落在邊界上的情況)。

示例 1:

輸入:radius = 1, x_center = 0, y_center = 0, x1 = 1, y1 = -1, x2 = 3, y2 = 1

輸出:true

解釋:圓和矩形有公共點 (1,0)

示例 2:

輸入:radius = 1, x_center = 0, y_center = 0, x1 = -1, y1 = 0, x2 = 0, y2 = 1

輸出:true

示例 3:

輸入:radius = 1, x_center = 1, y_center = 1, x1 = -3, y1 = -3, x2 = 3, y2 = 3

輸出:true

示例 4:

輸入:radius = 1, x_center = 1, y_center = 1, x1 = 1, y1 = -3, x2 = 2, y2 = -1

輸出:false

1 <= radius <= 2000

-10^4 <= x_center, y_center, x1, y1, x2, y2 <= 10^4

x1 < x2

y1 < y2

方法1:

(1)根據圓和矩形可能的相對關係,分類討論;

(2)若圓的圓心在矩形的上下,左右,及中間幾個方位,可以根據圓心和矩形邊界的距離進行判讀;

(3)若圓的圓心在矩形的左上,左下,右上,右下四個方位,可以使用圓心和矩形的四個頂點的距離進行判斷;

class

solution

//若圓心在矩形的左右

if(y_center>=y1&&y_center<=y2)

//若圓心在矩形的四個角落方位

return

(x_center-x1)

*(x_center-x1)

+(y_center-y1)

*(y_center-y1)

<=radius*radius

||(x_center-x2)

*(x_center-x2)

+(y_center-y2)

*(y_center-y2)

<=radius*radius

||(x_center-x1)

*(x_center-x1)

+(y_center-y2)

*(y_center-y2)

<=radius*radius

||(x_center-x2)

*(x_center-x2)

+(y_center-y1)

*(y_center-y1)

<=radius*radius;}}

;

圓和矩形是否有重疊

寫這篇部落格主要是把它當做乙個雲筆記,順便幫助一下做這道題沒有思路的人。因為之前想的比較複雜,現在看這道題感覺是如此簡單 給你乙個以 radius,x center,y center 表示的圓和乙個與座標軸平行的矩形 x1,y1,x2,y2 其中 x1,y1 是矩形左下角的座標,x2,y2 是右上角...

leetcode第1401題圓和矩陣是否有重疊

做了乙個純數學的演算法題,一開始還以為是考慮不周,但是看了題解,也都是數學方法直接去解。給你乙個以 radius,x center,y center 表示的圓和乙個與座標軸平行的矩形 x1,y1,x2,y2 其中 x1,y1 是矩形左下角的座標,x2,y2 是右上角的座標。如果圓和矩形有重疊的部分,...

判斷兩個矩形是否重疊

兩個矩形的邊均與x軸或y軸平行,即軸對齊的矩形 將第乙個矩形記做a,第二個矩形記做b 判斷矩陣a與矩陣b是否重疊 邊沿重疊也認為是重疊 第一種方案,正向思維 按照一般的思路,先列舉出所有的矩形重疊的情況,然後,判斷是否是其中一種,如圖所示,共有四種重疊情況,我們使用紫色代表矩形a,紅色代表矩形b,並...