最小面積矩形(Java)
給定x和y軸上的一組點,確定由這些點構成的矩形的最小面積,這些點的邊平行於x和y軸。
分析
在第一印象中,這個問題可以通過三種不同的方法來解決:
首先,網格上的最大值是一個常量40000。
也許我們可以遍歷所有握把的可能性。
通過計算操作的總數,這是不好的。
它的時間是O(N ^ 4)列表。
其次,也許我們可以使用DFS方法來搜索每個點,看看是否可以從每個點形成一個矩形。
這可能行得通,但這可能是一個更簡單的解決方案。
第三,通過觀察網格,我們可以考慮矩形的要求是什麼。
我們可以看到,如果有一個矩形,對角線上應該有兩個點(x1, y1)和(x2, y2)
還應該有另外兩個點對應於這兩個對角線點:(x1, y2)和(x2, y1)
所以解自然出來了。
我們遍歷兩個對角線點的所有可能性,看看其他兩個點是否存在。
我們來看第三個解。
我們可以使用哈希映射使點搜索常數時間。
下面的解決方案的時間複雜度是O(N ^ 2)。
Java解決方案
然後今天就講到這裏啦,大家記得點贊收藏,分享轉發