int trap(int* height, int heightSize){
    if(heightSize<=2) return 0;
    int left=0,right=heightSize-1;
    int leftMax=height[0],rightMax=height[heightSize-1];
    int ans=0;
    while(left<=right){
//元素不重合,没有遍历玩
        if(leftMax<rightMax){
            //左小于右,从左走
            if(height[left]<leftMax){
                //当前高度小于两者最小,可装两者之差
                ans+=leftMax-height[left];
            }else{
                //当前高度大于左高,将左高设为当前高度
                leftMax=height[left];
            }
            //左数组元素自增
            left++;
        }
        else{
            //右小于左,从右走
            if(height[right]<rightMax){
                //当前高度小于右,可装两者之差
                ans+=rightMax-height[right];
            }else{
                //当前高度大于右高,将右高设为当前高度
                rightMax=height[right];
            }
            //右数组元素自增
            right--;
        }
    }
    return ans;
}
Last modification:December 9, 2022
如果觉得我的文章对你有用,请随意赞赏