看見twitter上一道面試題,題目是這樣的,試著做了一下
「在這個裡我們有不同高度的牆。這個由乙個整數陣列所代表,陣列中每個數是牆的高度。上邊的圖可以表示為陣列[2,5,1,2,3,4,7,7,6]」
「假如開始下雨了,那麼牆之間的水坑能夠裝多少水呢?」
思路分析:
1. 找出該陣列最大的元素(row);
2. 將該陣列以該最大值為邊界分為左右兩側分別計算;
3. 計算左側
3.1 找出左側最大的值(left_row)
3.2 計算left_row和row之間(left_row的右側到row)的蓄水量,由於該範圍兩個端點的值最大,所以無論中間什麼情況,水的上界和兩個端點較小值是相同的;
3.3 以left_row為新的右側邊界,重複3.1,直到左側到達陣列的最左邊的值
4. 右側方法和左側類似
**驗證(matlab)
生成的隨機數組柱狀圖如下
**:
驗證結果:clc;clear;
%生成隨機數組
n=5;
x=magic(n);
x=reshape(x,1,n*n);
x=[0,x,0]; %邊值為0
[x1,row]=max(x);
rx=x(row:n*n+2);
volume=0;
%最大值左側遍歷
i=row;
while i>3
lx=x(1:i-1);
[x_left, row_left]=max(lx);
calculablev=x(row_left:i);
volume=calculatev(calculablev)+volume;
i=row_left;
end%最大值右側遍歷
i=row;
while i= x(b)
want=b;
else
want=1;
endfor i=2:b-1
v=v+x(i);
endvolume=x(want)*(b-2)-v;
end
volume=219
面試題 盛水 twitter
用a i 表示第i個牆的高度,牆的個數記為n 思考 1 兩個牆x,y之間可以盛水的條件是a x a y 是a x.y 中的前兩大數 2 如果a 1.x 1 中存在a i a x 那麼用k來替代x並不會使a x.y 中盛水減少,同樣如果a y 1.n 中存在a j a y 可以用j替代y不會使a x....
面試題 PHP面試題
建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...
系統設計面試題 實現Twitter時間線和搜尋
設計facebook feed和設計facebook搜尋都是類似的問題。收集需求並確定問題的範圍。提出問題以澄清用例和約束。討論假設。如果沒有面試官來回答明確的問題,我們將定義一些用例和約束。總則時間線 搜尋每月150 tb新內容 每秒10萬個讀取請求 每秒6000條推文 每秒擴散6萬條推文 每秒4...