您的位置:首页 > 游戏 > 手游 > 全球最顶尖的设计公司_网页设计与制作长江职业学院_电商平台怎么加入_seo设置是什么

全球最顶尖的设计公司_网页设计与制作长江职业学院_电商平台怎么加入_seo设置是什么

2025/2/28 16:17:28 来源:https://blog.csdn.net/weixin_47894469/article/details/145915027  浏览:    关键词:全球最顶尖的设计公司_网页设计与制作长江职业学院_电商平台怎么加入_seo设置是什么
全球最顶尖的设计公司_网页设计与制作长江职业学院_电商平台怎么加入_seo设置是什么

错误解法:若height[left]>height[right]则代表有坑

class Solution {public int trap(int[] height) {int left = 0;int area = 0;while(left<height.length-1){// 找坑int right = left+1;while(right<height.length-1 && height[left]>height[right]){right++;}// 计算第i个坑的面积int length_i = right-left-1;// 取小的那边作为高int height_i = height[left]<height[right]?height[left]:height[right];int area_i = length_i * height_i;  // 忽略里面存在石头// 删除里面的石头for(int i=left+1;i<right;i++){area_i = area_i - height[i];}// 加入第i个坑的面积area = area + area_i;left = right;}return area;}
}

注意:

  • for循环中,条件为i<num.length;但在while循环中,条件为i<num.length-1

错误原因:右边仍满足条件,但没坑

在这里插入图片描述

正确解法:预先计算每根柱子的左侧最高柱子(包含该柱子本身)和右侧最高柱子(包含该柱子本身),然后再一次遍历计算每个柱子能接的雨水量。

class Solution {public int trap(int[] height) {// 计算每个柱子的左边最大值int[] leftMax = new int[height.length]; leftMax[0] = height[0];for(int i=1; i<height.length; i++){leftMax[i] = Math.max(leftMax[i-1], height[i]);}// 计算每个柱子的右边最大值int[] rightMax = new int[height.length]; rightMax[height.length-1] = height[height.length-1];for(int i=height.length-2; i>=0; i--){rightMax[i] = Math.max(rightMax[i+1], height[i]);} // 计算每个柱子的接水量int area = 0;for(int i=0; i<height.length; i++){area = area + (Math.min(leftMax[i], rightMax[i]) - height[i]);}return area;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com