Go最新力扣热门100题之接雨水【困难】(4),小程序FMP优化实录

11 篇文章 0 订阅
10 篇文章 0 订阅

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

提示:

n == height.length
1 <= n <= 2 * 104
0 <= height[i] <= 105

解法1 按列计算

/\*\*
 \* @param {number[]} height
 \* @return {number}
 \*/
var trap = function(height) {
    let area=0;
    let leftMax=0;
    let rightMax=0;
    for(let i=0;i<height.length;i++){
          rightMax=findRightMax(leftMax,i,height);
         if(height[i]<leftMax&&rightMax>height[i]){
             area+=Math.min(leftMax,rightMax)-height[i];
         }
         else if(!findRightMax(leftMax,i,height)){
             leftMax=height[i];
         }
         if(height[i]>leftMax) leftMax=height[i];
    }
    return area;
};
function findRightMax(num,j,height){
    let n=0;
    for(let i=j;i<height.length;i++){
        if(height[i]>=num){
            return height[i];
        }
        if(height[i]>n)n=height[i]
    }
    return n;
}

执行结果:
在这里插入图片描述
解法2:双指针解法【注意理解】

/\*\*
 \* @param {number[]} height
 \* @return {number}
 \*/
var trap = function(height) {
   let area=0;
   if(height.length<=1) return 0;
   let left=0;
   let leftMax=0;
   let right=height.length-1;
   let rightMax=0;
   while(left<right){
       leftMax=Math.max(leftMax,height[left]);
       rightMax=Math.max(rightMax,height[right]);
       if(height[left]<height[right]){
           area+=leftMax-height[left];
           left++;
       }else{
           area+=rightMax-height[right];
           right--;
       }
    
   }
   return area;
};
    

执行情况:
在这里插入图片描述
解法3:单调栈【参照力扣官方】

/\*\*
 \* @param {number[]} height
 \* @return {number}
 \*/
var trap = function(height) {
   let area=0;
   if(height.length<=1) return 0;


![img](https://img-blog.csdnimg.cn/img_convert/67327db854fde3f4524fc47a68e2fb10.png)
![img](https://img-blog.csdnimg.cn/img_convert/7132908e9a2af0e24388dd68d0b93b9a.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

18658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值