• 算法-直方图装水问题


    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;
        }
    
  • 相关阅读:
    数据攻略●R语言自述
    测试实例
    xml反射
    过滤器
    使用s标签来进行简单的表格配置
    将Spring、Hibernate、Struts2连接起来
    Spring容器
    初见Spring框架
    Spring框架的AOP
    Hibernate里面的几个方法
  • 原文地址:https://www.cnblogs.com/SimonZ/p/14511004.html
Copyright © 2020-2023  润新知