标签:style io color ar os sp java for on
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container.
思路分析:这题考察双指针和贪心,左右两个指针,从两端开始,如果左边较矮,那么我们移动左边指针向右,去看能否找到更高的左“墙”,如果找到,就计算面积更新下目前的maxArea;如果右边较矮,那么我们移动右边指针向左,去看能否找到更高的右“墙”,如果找到,就计算面积更新下目前的maxArea,直到两个指针相遇,返回maxArea
AC Code
public class Solution { public int maxArea(int[] height) { int l, r, lh, rh, max, temp; l = 0; r = height.length - 1; lh = height[l]; rh = height[r]; max = 0; while(l < r){ temp = Math.min(lh, rh) * (r - l); if(max < temp) { max = temp; } if(lh > rh){ //move r while(l < r && height[r] <= rh){ r--; } if(l < r){ rh = height[r]; } } else { //move l while(l < r && height[l] <= lh){ l++; } if(l < r){ lh = height[l]; } } } return max; } }
LeetCode Container With Most Water
标签:style io color ar os sp java for on
原文地址:http://blog.csdn.net/yangliuy/article/details/41170833