水容器问题
给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。
[3,1,2,5,2,4]
输出
5
func maxWater( arr []int ) int64 {
// write code here
if len(arr) <3{return 0}
water := 0
i,j := 0,len(arr)-1
maxLeft := arr[i]; //桶左边的长度
maxRight := arr[j]; // 桶右边的长度
// 盛水总量
for (i < j){
// 较低边为左边
if(maxLeft < maxRight){
i++;
// 当前位置i小于大于较低边,更新较低边的值,小于装水
if(arr[i] > maxLeft){
maxLeft = arr[i];
}else{
water += maxLeft - arr[i];
}
}else{
// 较低边为右边
j--;
// 当前位置i小于大于较低边,更新较低边的值,小于装水
if(arr[j] > maxRight){
maxRight = arr[j];
}else{
water += maxRight - arr[j];
}
}
}
return int64(water)
}

浙公网安备 33010602011771号