有一说一,这我都没读懂,我都不知道啥意思,有看懂的在评论区分享一下

以前看一个大师的段子,里面提到过,桶能装多少水,取决于最短的那个板长度。所以我们要做的第一步是找出边界上最短的那一个板,第二步是拿中间部分的和边界对比,比如周围最短的高度是A,中间部分的高度分别是B、C、D、E那么只需要用A分别去减去B、C、D、E得到的正数结果相加就可以了。
public int calculateVolume(int[][] arr) {
int length = arr.length;
//先找出边界上最小的那一块
int min = arr[0][1];
for (int i = 1; i < length - 1; i++) {
min = arr[0][i] < min ? arr[0][i] : min;
min = arr[length - 1][i] < min ? arr[length - 1][i] : min;
min = arr[i][0] < min ? arr[i][0] : min;
min = arr[i][length - 1] < min ? arr[i][length - 1] : min;
}
//结果
int result = 0;
for (int i = 1; i < length - 1; i++) {
for (int j = 1; j < length - 1; j++) {
if (arr[i][j] < min) {
result += min - arr[i][j];
}
}
}
return result;
}