給定x和y軸上的一組點,確定由這些點構成的矩形的最小面積,這些點的邊平行於x和y軸

分析

在第一印象中,這個問題可以通過三種不同的方法來解決:

首先,網格上的最大值是一個常量40000。

也許我們可以遍歷所有握把的可能性。

通過計算操作的總數,這是不好的。

它的時間是O(N ^ 4)列表。

其次,也許我們可以使用DFS方法來搜索每個點,看看是否可以從每個點形成一個矩形。

這可能行得通,但這可能是一個更簡單的解決方案。

第三,通過觀察網格,我們可以考慮矩形的要求是什麼。

我們可以看到,如果有一個矩形,對角線上應該有兩個點(x1, y1)和(x2, y2)

還應該有另外兩個點對應於這兩個對角線點:(x1, y2)和(x2, y1)

所以解自然出來了。

我們遍歷兩個對角線點的所有可能性,看看其他兩個點是否存在。

我們來看第三個解。

我們可以使用哈希映射使點搜索常數時間。

下面的解決方案的時間複雜度是O(N ^ 2)。

Java解決方案

最小面積矩形(Java)


然後今天就講到這裏啦,大家記得點贊收藏,分享轉發

擴展閱讀

TypeScript + 大型項目實戰

GitHub上最受歡迎的5大Java項目!

微信公衆號支付功能開發(Java版)

微服務部署:藍綠部署、滾動部署、灰度發佈、金絲雀發佈

對接「支付寶」支付接口

美團面試失敗(Java開發)

相關文章