海安市建设局网站,国外企业招聘网站,网站建设和维护的职责,天津网站建设设计开发公司解题思路#xff1a;
1#xff0c;暴力解法#xff08;超时#xff09;
我们可以使用两层for循环进行遍历。找到那个最大的面积即可#xff0c;这里我就不写代码了#xff0c;因为写了也是超时。
2#xff0c;双指针法
先定义两个指针一个在最左端#xff0c;一个在…
解题思路
1暴力解法超时
我们可以使用两层for循环进行遍历。找到那个最大的面积即可这里我就不写代码了因为写了也是超时。
2双指针法
先定义两个指针一个在最左端一个在最右端矩形的体积是 底*高 我们将两个指针之间的距离当做底当两个指针移动时底一定会减小所以如果此时高还在减小那么他的面积肯定会减小所以我们就找高增大的作为矩形的两边因此就有了height[left] height[right] 这个判断条件每次移动后都要比较并取最大的体积然后重复循环即可。此算法的时间复杂度是On。
代码实现
class Solution {public int maxArea(int[] height) {int left 0,right height.length - 1;int ret 0;while(left right){int v (right - left) * Math.min(height[left],height[right]);if(height[left] height[right]){right--;}else {left;}if( ret v){ret v;}}return ret;}
}