LeetCode第11题 盛水最多的容器

/*  给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。  在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。  找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器,且 n 的值至少为 2。*/

思路: 类似于木桶效应.   每次移动较短的线,保持长线不动.(如果短线不动而长线动,容量减小(y没有增大反而x变小))    记录最大值.
 1 class Solution11 {
 2
 3   public int maxArea(int[] height) {
 4     int right = height.length - 1;
 5     int left = 0;
 6     int max = Integer.MIN_VALUE;
 7     while (left < right) {
 8       int area = Math.min(height[right], height[left]) * (right - left);
 9       max = Math.max(max, area);
10       if (height[left] < height[right]) {
11         left++;
12       } else {
13         right--;
14       }
15     }
16     return max;
17   }
18 }

原文地址:https://www.cnblogs.com/rainbow-/p/10257101.html

时间: 2024-10-02 18:39:00

LeetCode第11题 盛水最多的容器的相关文章

leetcode 11盛水最多的容器

class Solution { public: int maxArea(vector<int>& height) { //双指针法:从最宽的容器开始计算,当更窄的容器盛水量要大于之前容器,那必须比之前容器高,因此可以移动两个指针,直到最窄time O(n),space O(1); int low=0; int high=height.size()-1; int volume=0; while(low<high){ int h=min(height[low],height[hig

leetcode 盛水最多的容器(双指针)

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水. 说明:你不能倾斜容器,且 n 的值至少为 2. 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7].在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49. 示例: 输入: [1,8,6,2,5,4,8,3,7]输出: 49 来源

盛水最多的容器

题目:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水.说明:你不能倾斜容器,且 n 的值至少为 2.来源:https://leetcode-cn.com/problems/container-with-most-water/ 法一:双指针法 思路:由于是求最大的存水面积,易知影响存水面积S的只有两

leetcode第11题--Container With Most Water

Problem: 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

Leetcode(11)-盛最多水的容器

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水. 注意:你不能倾斜容器,n 至少是2. 思路:一开始我以为要用动态规划做,比如建立一个辅助数组dp[i][j],表示从i到j的最大容器.这样最后我直接查看dp[0][n]的值就可以.并且dp[i][i]=0,但是我并不知道动态转化方程是什么.比如dp[i

[leetcode]11. 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 contain

Two Points问题--之LeetCode 11题

---恢复内容开始--- Container with most  water--LeetCode11题 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 t

LeetCode第[42]题(Java):Trapping Rain Water

题目:接雨水 难度:hard 题目内容: Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In

sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)

n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to my inst