常考資料結構與演算法 容器盛水問題

2021-10-20 06:07:50 字數 738 閱讀 6056

給定乙個整形陣列arr,已知其中所有的值都是非負的,將這個陣列看作乙個容器,請返回容器能裝多少水。

[3,1,2,5,2,4]
返回值

能裝多少水是由左右兩邊較低的邊決定的,因此採用雙指標,從開頭和最後向中間靠攏,當位置i的數小於較低邊表示可以裝水。當位置i的數大於較低邊時,更新較低邊為位置i的值。

public class maxwaterstruct ;

maxwaterstruct maxwaterstruct = new maxwaterstruct();

long l = maxwaterstruct.maxwater(arr);

system.out.println(l);

}public long maxwater (int arr)

int i = 0; // 左指標

int j = arr.length - 1; // 右指標

int maxleft = arr[i]; //桶左邊的長度

int maxright = arr[j]; // 桶右邊的長度

long ret = 0l; // 盛水總量

while(i < j)else

}elseelse}}

return ret;}}

面試常考資料結構與演算法

資料結構部分 1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造...

面試常考資料結構與演算法

資料結構部分 1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造...

面試常考資料結構與演算法

1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造成記憶體空間的...