博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Container With Most Water 装最多水的容器
阅读量:7057 次
发布时间:2019-06-28

本文共 2052 字,大约阅读时间需要 6 分钟。

 

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.

 

这道求装最多水的容器的题和那道很类似,但又有些不同,那道题让求整个能收集雨水的量,这道只是让求最大的一个的装水量,而且还有一点不同的是,那道题容器边缘不能算在里面,而这道题却可以算,相比较来说还是这道题容易一些,我们需要定义i和j两个指针分别指向数组的左右两端,然后两个指针向中间搜索,每移动一次算一个值和结果比较取较大的,容器装水量的算法是找出左右两个边缘中较小的那个乘以两边缘的距离,代码如下:

 

C++ 解法一:

class Solution {public:    int maxArea(vector
& height) { int res = 0, i = 0, j = height.size() - 1; while (i < j) { res = max(res, min(height[i], height[j]) * (j - i)); height[i] < height[j] ? ++i : --j; } return res; }};

 

Java 解法一:

public class Solution {    public int maxArea(int[] height) {        int res = 0, i = 0, j = height.length - 1;        while (i < j) {            res = Math.max(res, Math.min(height[i], height[j]) * (j - i));            if (height[i] < height[j]) ++i;            else --j;        }        return res;    }}

 

这里需要注意的是,由于Java中的三元运算符A?B:C必须须要有返回值,所以只能用if..else..来替换,不知道Java对于三元运算符这么严格的限制的原因是什么。

下面这种方法是对上面的方法进行了小幅度的优化,对于相同的高度们直接移动i和j就行了,不再进行计算容量了,参见代码如下:

 

C++ 解法二:

class Solution {public:    int maxArea(vector
& height) { int res = 0, i = 0, j = height.size() - 1; while (i < j) { int h = min(height[i], height[j]); res = max(res, h * (j - i)); while (i < j && h == height[i]) ++i; while (i < j && h == height[j]) --j; } return res; }};

 

Java 解法二:

public class Solution {    public int maxArea(int[] height) {        int res = 0, i = 0, j = height.length - 1;        while (i < j) {            int h = Math.min(height[i], height[j]);            res = Math.max(res, h * (j - i));            while (i < j && h == height[i]) ++i;            while (i < j && h == height[j]) --j;        }        return res;    }}

 

参考资料:

 

转载地址:http://txrol.baihongyu.com/

你可能感兴趣的文章
SecureCRT配色
查看>>
Spring、Spring MVC、MyBatis整合文件配置详解
查看>>
spring-mvc 与 openid4java
查看>>
iBatis简单入门教程
查看>>
将archlinux 2013-06-01版,安装配置为个人工作站
查看>>
十大流行Linux发行版
查看>>
微信公众平台消息接口开发之微信浏览器HTTP_USER_AGENT判断
查看>>
Android自定义ScrollView实现一键置顶功能
查看>>
samba配置
查看>>
php -- realpath($path) 函数
查看>>
Web开发之Goahead
查看>>
crm工作机会实体
查看>>
[分享] 【旧文新读】少一分火气,多一份和气
查看>>
如何用Entity Framework 6 连接Sqlite数据库[转]
查看>>
克隆虚机网卡出现 Device eth0 does not seem to be present, delaying initialization 错误
查看>>
Wampserver2.5配置虚拟主机出现403 Forbidden的处理方案
查看>>
非技术1-学期总结&ending 2016
查看>>
IOT数据库选型——NOSQL,MemSQL,cassandra,Riak或者OpenTSDB,InfluxDB
查看>>
MAC使用GITHUB
查看>>
php Pthread 多线程 (六) Pool类 线程池
查看>>