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.
[分析] 用两个指针从两端往中间扫,计算两指针当前围成的矩形面积并更新全局最大值并移动高度矮的指针。方法2 做的小优化是扫描过程中,如果当前两指针中高度较矮的指针比之前的最矮指针小,则不需要计算所围成的矩形面积,因为宽和高都比之前小的情况下矩形面积必然更小。
此题思路和Trapping Rain Water的一种思路一致。
public class Solution {
public int maxArea(int[] height) {
if (height == null || height.length == 0)
return 0;
int l = 0, r = height.length - 1;
int minBar = 0, maxArea = 0;
while (l < r) {
int currMin = Math.min(height[l], height[r]);
if (currMin == height[l]) {
if (currMin > minBar)
maxArea = Math.max(maxArea, currMin * (r - l));
l++;
} else {
if (currMin > minBar)
maxArea = Math.max(maxArea, currMin * (r - l));
r--;
}
if (currMin > minBar)
minBar = currMin;
}
return maxArea;
}
public int maxArea1(int[] height) {
if (height == null || height.length == 0)
return 0;
int l = 0, r = height.length - 1;
int minBar = 0, maxArea = 0;
while (l < r) {
minBar = Math.min(height[l], height[r]);
if (minBar == height[l]) {
maxArea = Math.max(maxArea, minBar * (r - l));
l++;
} else {
maxArea = Math.max(maxArea, minBar * (r - l));
r--;
}
}
return maxArea;
}
}
分享到:
相关推荐
js js_leetcode题解之11-container-with-most-water.js
c语言入门 C语言_leetcode题解之11-container-with-most-water.c
c c语言_leetcode 0011_container_with_most_water.zip
【LeetCode】Container With Most Water 是一道经典的计算机算法题,主要涉及到数组操作和动态规划的优化技巧。题目要求在给定的一组非负整数坐标中找到两条线,使得它们与x轴形成的容器能容纳最多的水。问题的核心...
在LeetCode上的问题"Container With Most Water"是一个经典的计算机科学问题,主要涉及到算法设计和优化。这个问题要求我们找到两个垂直线,它们与x轴形成一个容器,使得该容器能容纳最多的水。这个问题可以看作是二...
java入门 java_leetcode题解之011_Container_With_Most_Water
- 例如在 ContainerWithMostWater 题目中,通过双指针从两端向中间遍历找出盛最多水的容器。 13. **回溯算法**: - 回溯算法用于解决可以分解为多个子问题的问题,通过逐步构建解的候选,并且在构建过程中剪枝以...
- Container With Most Water: 给定一个数组,其中每个元素代表一个宽度为1的柱子高度,要求找出两个柱子,使得它们之间能盛最多量的水。 - Integer to Roman / Roman to Integer: 这两个问题分别要求将整数转换为...
leetcode-goMy solution to LeetCode problems using GolangProblems 题库Array 数组NoTitle题名DifficultyStatus11Container With Most Water盛最多水的容器MediumSolved26Remove Duplicates from Sorted Array删除...
Container With Most Water 盛最多水的容器 13 Roman to Integer 罗马数字转整数 14 Longest Common Prefix 最长公共前缀 20 Valid Parentheses 有效的括号 26 Remove Duplicates from Sorted Array 删除排序数组中...
分割数组求最大差值leetcode LeetCode 学习之路 记录自己完成LeetCode的代码和结果。 序号 中文名称 英文名称 通过率 难度 1 Two Sum 47.0% 简单 2 Add Two Numbers 36.0% 中等 3 Longest Substring Without ...
【字符串知识】 ...示例题目包括《盛最多水的容器》(https://leetcode-cn.com/problems/container-with-most-water/)、《移动零》(https://leetcode-cn.com/problems/move-zeroes/)以及《爬楼梯》...
Container With Most Water LeetCode 19 Remove Nth Node From End of List LeetCode 42 Trapping Rain Water LeetCode 61 RotateList LeetCode 75 Sort Colors LeetCode 125 Valid Palindrome LeetCode 167 Two Sum...
35%2☆ ☆27%3☆ ☆24%4☆ ☆ ☆21%5☆ ☆25%6☆ ☆26%7☆24%8☆ ☆13%9Palindrome Number☆35%10Regular Expression Matching☆ ☆ ☆24%:red_heart:11Container With Most Water☆ ☆36%12Integer to R
with Ruby 13. Roman to Integer 查表,通过从前往前筛选字符串,把代表的值一个个加起来 26. Remove Duplicates from Sorted Array 难度easy的题目。根据题目要求,是不能新建数组。只能在原来的基础上做修改。基本...
Container with Most Water" 是一个编程问题,源自LeetCode等在线编程平台的挑战题目。这个题目要求我们用JavaScript编写算法来解决一个关于找到两个竖直木板形成的容器能容纳的最大水量的问题。 【描述】在实际的...
Container with Most Water 14 Longest Common Prefix 15 Three Sum 16 Three Sum Closest 20 Valid Parentheses 26 Remove Duplicates from Sorted Array 48 Rotate Image 53 Maximum Subarray 55 Jump Game 56 ...
leetcode给单链表加一js实现 LeetCode By JavaScript LeetCode Solutions (All By JavaScript!...Water:双指针搜索的典型例子 12 Integer to Roman: 将阿拉伯数字转换为罗马数字 38 Count and Say:
八皇后 leetcode DSA(Data Structures and Algorithm) + Practice DSA Data Structures # 名称 结构 额外 1 数组 2 链表 3 栈 ...LeetCode ...Container With Most Water Algorithm Medium 0015 3Sum A