最大矩形;及第n杯水分析

紫鳳發表於2013-08-02

今日面試題:最大矩形

在一個點陣圖中找面積最大的白色矩形:給你一個NxN的黑白點陣圖,找一個面積最大的全白色的矩形。注意了,是一個矩形,不是任意一個白色相連的區域。你的演算法能夠達到的最好的時間複雜度是多少呢?

===================

第n杯水分析

原題

有一座金字塔,從上到下,第一層有一個杯子、第二層有兩個杯子,依次類推。對杯子進行編號,有如下的形狀:

1
2 3
4 5 6

每個杯子的容量為C升,從塔頂倒下L升水,當1號杯子滿了之後,會等量溢位到2號和3號杯子。當2號和3號滿了,2號溢位到4號和5號,3號溢位到5號和6號,注意5號接受來自兩個杯子的水。依次類推。給定C和L,請問,第n杯裡有多少水。

分析

這個型別的題目,關鍵點就是明瞭水倒下來的過程。我們這裡做簡單的分析, 假設L>C, 如果L

金字塔深度 0 1 1 2 2 2
杯號 1 2 3 4 5 6
A索引 0 1 2 3 4 5

觀察上面的表格,我們會發現,一個規律,i號杯深度為h,則i號中溢位的水,將平分進入:

i + h + 1

i + h + 2

比如,文章開始的圖中,3號杯進入5號和六號,3號杯的h為1,則

5 = 3 + 1 + 1

6 = 3 + 2 + 2

利用這個技巧,可以在陣列中儲存樹形的金字塔,並且可以很方便的找到孩子節點。

計算出所有的A[i]之後,要得到最後的答案,還有一部之遙。即:

A[i] >= C ? C : A[i]

【分析完畢】

本文來自微信:待字閨中,2013-07-31釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。 【分析完畢】

相關文章