题目链接:container-with-most-water
/** * 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. * */ public class ContainerWithMostWater { // 45 / 45 test cases passed. // Status: Accepted // Runtime: 256 ms // Submitted: 0 minutes ago //时间复杂度O(n) 空间复杂度O(1) static int maxArea(int[] height) { int left = 0; int right = height.length - 1; int max = 0; while(left < right) { int area = Math.min(height[left], height[right]) * (right - left); max = Math.max(max, area); if(height[left] <= height[right]) { left ++; } else { right -- ; } } return max; } public static void main(String[] args) { System.out.println(maxArea(new int[]{2, 0, 2})); } }
[LeetCode 11] Container With Most Water
原文地址:http://blog.csdn.net/ever223/article/details/44682635