盛最多水的容器:ACM 模式刷题
按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。
题目描述
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
输入格式
第一行包含一个整数 n,表示竖线数量。
第二行包含 n 个非负整数 height[i],相邻数字以空格分隔。
输出格式
输出一个整数,表示容器能够盛水的最大面积。
数据范围
- 2 ≤ n ≤ 10⁵
- 0 ≤ height[i] ≤ 10⁴
公开样例
样例 1
输入
9 1 8 6 2 5 4 8 3 7
输出
49
选择下标 1 和 8 的竖线,面积为 min(8, 7) × (8 − 1) = 49。
样例 2
输入
2 1 1
输出
1
两条竖线之间的宽度为 1,高度为 1。
练习建议
先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。