Q17_21_直方图的体积的更佳解决方案
作者: jyothiasapu创建于 2017年11月23日更新于 2025年1月22日
public static int computeVolume(int[] arr) { MaxElemAndPos mp = getMax(arr); int sum = 0; int curMax = 0; // 计算到最大值为止 for (int i = 0; i < mp.elemPos; i++) { if (arr[i] > curMax) { curMax = arr[i]; } sum += (curMax - arr[i]); } curMax = 0; for (int i = arr.length - 1; i > mp.elemPos; i--) { if (arr[i] > curMax) { curMax = arr[i]; } sum += (curMax - arr[i]); } return sum; } private static MaxElemAndPos getMax(int[] arr) { MaxElemAndPos mp = new MaxElemAndPos(); mp.elemPos = 0; mp.maxElem = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] > mp.maxElem) { mp.maxElem = arr[i]; mp.elemPos = i; } } return mp; } public static class MaxElemAndPos { int maxElem; int elemPos; }
内容来源: careercup/CtCI-6th-Edition