题解 | #接雨水问题#

接雨水问题

https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * max water
     * @param arr int整型一维数组 the array
     * @return long长整型
     */
    public long maxWater (int[] arr) {
        // write code here
        int sum = 0;
        int count = 1;
        int i = 0;
        int j = arr.length-1;
        if(arr.length == 1)
        return 0;
        int min = arr[0] < arr[arr.length-1]?0:arr.length-1;
        int max = arr[0] < arr[arr.length-1]?arr.length-1:0;
        while(count != arr.length){//[6,4,2,0,3,2,0,3,1,4,5,3,2,7,5,3,0,1,2,1,3,4,6,8,1,3]
            
            if(arr[i] < arr[j]){
                i++;
                if(arr[i]< arr[min]){
                    sum += arr[min] - arr[i];
                }else if(arr[i] > arr[max]){
                    min = max;
                    max = i;                   
                }else{
                    min = i;
                }
            }else{
                j--;
                if(arr[j] < arr[min]){
                    sum += arr[min] - arr[j];
                }else if(arr[j] > arr[max]){
                    min = max;
                    max = j;
                    
                }else{
                    min = j;
                }
            }
            count++;
        }

        return sum;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务