尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

关于LeetCode第11题的题解

关于LeetCode第11题的题解 **关于LeetCode第11题的题解**其实当第一次遇到这个题目的时候我第一眼打眼想到的是暴力解classSolution{publicintmaxArea(int[]height){intans0;for(inti0;iheight.length-1;i){for(intj1;jheight.length;j){ints(j-i)*Math.min(height[i],height[j]);if(sans){anss;}}}returnans;}}这个解法的时间复杂度是O(n2),由于时间复杂度太高自然在力扣的判题中就错误了因此在版本一的基础上开发了解法2。classSolution{publicintmaxArea(int[]height){intans0;intleft0;intrightheight.length-1;while(leftrightright0leftheight.length){intaright-left;ansMath.max(ans,a*Math.min(height[left],height[right]));if(height[right]height[left]){right--;}else{left;}}returnans;}}其实本题难度不算高由原题的示例图可以很容易看出当长度为n的时候最大面积的情况其实已经考虑过了也就是最矮柱乘以n那么我们很容易得出接下来只需要考虑n-1n-2,…1的情况下面积是否有所变化。而当长度减少的时候只有高度变高才有可能出现面积变大的情况这个时候就直接引入双指针左右指针分别指向左右两个高度。保留高度更高的一边舍去高度更矮的一边。这样只需要遍历一遍也就是复杂度为N就可以直接得出结论了。
返回列表