• 算法-直方图装水问题


    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;
        }
    
  • 相关阅读:
    杭电1176解答免费馅饼
    Locust 关联
    Locust 参数化
    Locust 介绍篇
    Locust 集合点
    Locust 其他协议
    团队项目需求分析报告
    第一次个人编程作业
    团队项目选题报告
    第一次软工作业
  • 原文地址:https://www.cnblogs.com/SimonZ/p/14511004.html
Copyright © 2020-2023  润新知