題解四十九

2021-10-07 00:09:54 字數 942 閱讀 4592

給你 n 個非負整數 a1,a2,…,an,每個數代表座標中的乙個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。

說明:你不能傾斜容器,且 n 的值至少為 2。

示例:

思路:

我們使用雙指標i、j,分別指向陣列的兩端。

首先我們知道,容器的容量是雙指標中較小的值 * 雙指標之間的距離。

在每乙個狀態下,無論長板或短板收窄 1 格,都會導致水槽 底邊寬度 −1:

(1)若向內移動短板,水槽的短板 minheight 可能變大,因此容器面積可能增大。

(2)若向內移動長板,水槽的短板minheight 不變或變小,下個容器的面積一定小於當前容器面積。

最開始雙指標指向陣列的兩端,指標i只能向右移動,指標j只能向左移動,若指標i指向的較小數,保持指標i不動,不管指標j在**,新的容器面積都不會大於原本的容器面積,因為雙指標之間的距離減小,而高度還是雙指標中的較小值。

即無論我們怎麼移動j指標,得到的容器的容量都小於移動前容器的容量。也就是說,這個i指標對應的數不會作為容器的邊界了,那麼我們就可以丟棄這個位置,將指標向右移動乙個位置,此時新的i指標於原先的j指標之間的左右位置,才可能會作為容器的邊界。

這樣以來,我們將問題的規模減小了 1,被我們丟棄的那個位置就相當於消失了。此時的左右指標,就指向了乙個新的、規模減少了的問題的陣列的左右邊界。

之後我們也如此考慮,直到找出容器的最大值。

class

solution

else

}return res;

}}

一百四十九

arraylist類圖如下 arraylist的底層是由陣列實現的,陣列的特點是固定大小,而arraylist實現了動態擴容。arraylist部分變數如下,在下面的分析中會用到這些變數。1.1 無參構造器 初始化arraylist的時候如果不指定大小,則會建立乙個空陣列。public arrayl...

(四十九)類方法

首先,我們知道,cin是istream類的乙個函式。cin.getline 的字首是cin,通過英文句號和getline 相連。因此,在這裡,getline 是istream的乙個類方法。cin.getline 是面對c 風格的字串使用的。而面對string風格的字串時,我們使用的是getline ...

穀粒商城鏈路追蹤 四十九

個人感覺是版本的問題,因為我版本都是最新的,報各種錯,訂單服務呼叫說輪詢有問題,然後還有下面這個問題,訂單那個沒有解決。安裝的zipkin也是最新的,可以參考之前的部落格 在整合鏈路追蹤的時候,發現有3個服務一直報錯,具體如下 但是我把相關配置去掉,就能啟動,所以我確定是引入導致的,詳細看報錯原因,...