华为OD机试-水库蓄水问题
公元2919年,人类终于发现了一颗宜居星球——X星。
现想在X星一片连绵起伏的山脉间建一个天热蓄水库,如何选取水库边界,使蓄水量最大?
要求:
山脉用正整数数组s表示,每个元素代表山脉的高度。
选取山脉上两个点作为蓄水库的边界,则边界内的区域可以蓄水,蓄水量需排除山脉占用的空间
蓄水量的高度为两边界的最小值。
如果出现多个满足条件的边界,应选取距离最近的一组边界。
输出边界下标(从0开始)和最大蓄水量;如果无法蓄水,则返回0,此时不返回边界。
例如,当山脉为s=[3,1,2]时,则选取s[0]和s[2]作为水库边界,则蓄水量为1,此时输出:0 2:1
当山脉s=[3,2,1]时,不存在合理的边界,此时输出:0。
给定一个长度为 n 的整数数组 height 。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。
输入描述:
输入一行数字,空格分隔。
输出描述:
输出蓄水量的最大值及输出蓄水量最大时的边界下标
示例1:
输入:
1 8 6 2 5 4 8 3 7
输出:
1 6:15
说明:蓄水量的最大值为15
蓄水量最大时的边界下标为1 和 6
————————————————
版权声明:本文为CSDN博主「MISAYAONE」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://renjie.blog.csdn.net/article/details/128441418
Java 实现:https://renjie.blog.csdn.net/article/details/128441437
Python实现:https://renjie.blog.csdn.net/article/details/128441407
C++ 实现:https://renjie.blog.csdn.net/article/details/128441418
JavaScript实现:https://renjie.blog.csdn.net/article/details/129046811
C实现:https://renjie.blog.csdn.net/article/details/129190672