题解 | #盛水最多的容器#
盛水最多的容器
https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47
解题思路:
这道题,刚开始看不懂题意,但是,官方视频讲解后,发现,原来,就是很简单的东西,就是一个贪心算法,其实,说得有点高大上了,就是,如何,找出两个数组里面的两个高度最小*(right-left)得出最大的面积,关键点就是两个:
1、求面积留最大的,留最大的
2、遍历高度时,留最高的
import java.util.*; public class Solution { /** * * @param height int整型一维数组 * @return int整型 */ public int maxArea (int[] height) { if(height.length < 1) { return 0; } int res = 0; int left =0, right = height.length-1; while(left < right) { // 就是计算,两个高度最小的height *(right-left)得到的面积最大 int capacity = Math.min(height[left], height[right])*(right-left); // 留下面积最大的 res = Math.max(res, capacity); // 留下高度最高的 if(height[left] > height[right]) { right--; } else { left++; } } return res; } }