zoukankan      html  css  js  c++  java
  • 算法-直方图装水问题

    public static void main(String[] args) {
    //        int[] ints = {0,0,0,1,0,0};
            int[] ints = {2,1,5,1,2};
    //        int[] ints = {5, 1, 1, 5};
    //        int[] ints = {1, 3, 2, 4, 1};
            System.out.println(getWater(ints));
        }
    
        public static int getWater(int[] arr) {
            if (null == arr) {
                return 0;
            }
            int count = 0;
            for (int i = 0; i < arr.length; i++) {
                int leftMax = (i == 0) ? 0 : max(arr, 0, i);
                int rightMax = (i == arr.length - 1) ? 0 : max(arr, i + 1, arr.length);
                int max = Math.min(leftMax, rightMax);
                int water = max - arr[i];
                if (water > 0) {
                    count += water;
                }
            }
            return count;
        }
    
        public static int max(int[] arr, int start, int end) {
            if (null == arr || start < 0 || end > arr.length || end < start) {
                return 0;
            }
    
            int max = arr[start];
            for (int i = start + 1; i < end; i++) {
                max = Math.max(max, arr[i]);
            }
            return max;
        }
    
  • 相关阅读:
    spring-boot快速搭建解析
    springmvc处理ajax跨域
    Spring-AOP解析
    springmvc注解
    springmvc源码分析
    Spring源码分析
    JAVA性能优化
    数据取舍
    命令行控制
    Junit常用操作
  • 原文地址:https://www.cnblogs.com/SimonZ/p/14511004.html
Copyright © 2011-2022 走看看