两种做法
/**
* @param heights: an array of integers
* @return: an integer
*/
public int maxArea(int[] heights) {
// write your code here
//对撞指针,一次遍历
if (heights == null || heights.length < 2) {
return 0;
}
int area = 0;
int left = 0, right = heights.length - 1;
while (left < right) {
int width = right - left;
int height = heights[left] > heights[right] ? heights[right] : heights[left];
int temp = width * height;
if (temp > area) {
area = temp;
}
if (heights[left] == heights[right]) {
left++;
right--;
} else if (heights[left] > heights[right]) {
right--;
} else {
left++;
}
}
return area;
//两层循环
// if (heights == null || heights.length < 2) {
// return 0;
// }
// int area = 0;
// for (int i = 0; i < heights.length - 1; i++) {
// for (int j = i + 1; j < heights.length; j++) {
// int width = j - i;
// int height = heights[i] > heights[j] ? heights[j] : heights[i];
// int temp = width * height;
// if (temp > area) {
// area = temp;
// }
// }
// }
// return area;
}