面试题笔记
作者:Clarke
- 2022 年 3 月 28 日
本文字数:511 字
阅读完需:约 2 分钟
题目是接雨水的一个变体,
是在两个柱子之间接水。
所以和 leeteCode 接雨水的区别在于不需要减去柱子的高度,
每个间隔接水的高度取决于 leftMaxHeight 或者 righMaxHeight.
举例 int heights = {2,1,3} 结果是 4
public class Solution {
public static void main(String[] args){
int[] nums = {3,3,3};
System.out.println(trap(nums));
}
static int trap(int[] height){
int ans = 0;
int left = 0, right = height.length - 1;
int leftMax = 0, rightMax = 0;
while (left < right) {
leftMax = Math.max(leftMax, height[left]);
rightMax = Math.max(rightMax, height[right]);
if (height[left] < height[right]) {
//关键点1.1 计算这个格子能装多少水
ans += leftMax ;
++left;
} else {//关键点2 反之,就移动右边界,这说明左边肯定能接住
//关键点2.1 计算这个格子能装多少水
ans += rightMax ;
--right;
}
}
return ans;
}
}
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 3
Clarke
关注
还未添加个人签名 2018.04.15 加入
还未添加个人简介
评论