LeetCode. Container With Most Water
来源:互联网 发布:虚拟社交网络的流行 编辑:程序博客网 时间:2024/05/19 16:50
试题概述
Given n non-negative integers
Note: You may not slant the container.
题目大概是说在笛卡尔坐标系中给定n个点, 这n个点的坐标都在x轴上方, 向x轴作垂线段可得到x条线段. 从中选择两条线段, 使得这两条线段和x轴形成的水缸得面积最大.
解题思路
最简单粗暴的方法是穷举这
假设有2个指针i, j. i从最左侧出发, j从最右侧出发. 因为水缸的高度是由二者中的较小值决定的. 当height[i] < height[j]时, ++ i. 假设i的值不变, – j, 不可能得到更优解(因为水缸的长度在减小, 高度不可能超过height[i]). 反之, – j. 并记录每次移动i, j后的水缸面积, 并更新水缸面积的最大值.
源代码
public class Solution { public int maxArea(int[] height) { int i = 0, j = height.length - 1; int maxArea = getArea(height, i, j); while ( i < j ) { if ( height[i] < height[j] ) { ++ i; } else { -- j; } int currentArea = getArea(height, i, j); if ( currentArea > maxArea ) { maxArea = currentArea; } } return maxArea; } private int getArea(int[] height, int i, int j) { int a = Math.min(height[i], height[j]); int b = j - i; return a * b; } public static void main(String[] args) { Solution s = new Solution(); int[] height = {2, 3, 10, 5, 7, 8, 9}; System.out.println(s.maxArea(height)); }}
0 0
- LeetCode: Container With Most Water
- [LeetCode]Container With Most Water
- LeetCode Container With Most Water
- LeetCode: Container With Most Water
- [Leetcode] Container With Most Water
- Leetcode: Container With Most Water
- [LeetCode] Container With Most Water
- LeetCode Container With Most Water
- [Leetcode] Container With Most Water
- [LeetCode]Container With Most Water
- LeetCode-Container With Most Water
- Container With Most Water leetcode
- LeetCode - Container With Most Water
- LeetCode: Container With Most Water
- Leetcode: Container With Most Water
- 【LeetCode】Container With Most Water
- Leetcode: Container With Most Water
- LeetCode:Container With Most Water
- android lint 是什么
- MySQL开启远程访问
- Struts2与Servlet的关系
- CentOS上JDK的安装与环境变量的配置
- 【BABY夜谈大数据】基于内容的推荐
- LeetCode. Container With Most Water
- POJ1364 King
- 如何在Android开发中高效使用Volley网络框架
- 前端组件化开发和MVC
- HD 2602 Bone Collector (0-1背包)
- 开源项目学习方法
- 返回多值
- dpkg错误解决
- <%@ include file=” ”%> 和<jsp:include page=” ” flush=”true”/> 区别