LeetCode 11.盛水最多的容器

在这里插入图片描述
输入:[1,8,6,2,5,4,8,3,7]
输出:49
思路:看到题目第一反应是双指针(自己没写出了)。本题可以暴力破解,也可采用双指针的方法。

  • 暴力破解
var maxArea = function(height) {
let start =0
let maxHeight=0
let len = height.length
let res = 0
while(start<len-1){
    if(height[start]>maxHeight){
        maxHeight = height[start]
        for(let i =start;i<len;i++){
            res=Math.max(Math.min(height[start],height[i])*(i-start),res)
        }
    }
    start++
}
return res
};
  • 双指针
    –头尾指针分别指向数组的首字符和尾字符,计算容积,然后将数字小的指针向中心移动,直至遍历所有位置。值得注意的是,当两个指针所指的数字是一样的时候,是可以任意移动一个的。原因在于当前面积就是以这两边为边界的最大面积,虽然过程中计算结果不一样,但并不会因此错过最大面积。具体代码如下:
var maxArea = function(height) {
let start =0
let end = height.length-1
let res = 0
while(start!=end){
    
            res=Math.max(Math.min(height[start],height[end])*(end-start),res)
            if(height[start]>height[end]){
                end--
            }else{
                start++
            }
 }       
return res
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值