【hot100-java】【接雨水】
R8-双指针篇
转战java后端的第一天,学点java语法(手动狗头)
这题之前写过多种解法
下面我们使用前后缀分离法解决。
class Solution {public int trap(int[] height) {int n = height.length;//表示height[0]到height[i]的最大值int[] preMax=new int[n];preMax[0]=height[0];for (int i=1;i<n;i++){preMax[i]=Math.max(preMax[i-1],height[i]);}//sufMax[i]表示从height[i]到height[n-1]的最大值int[] sufMax = new int[n];sufMax[n-1]=height[n-1];for (int i=n-2;i>=0;i--){sufMax[i]=Math.max(sufMax[i+1],height[i]);}int ret=0;for (int i=0;i<n;i++){ret+=Math.min(preMax[i],sufMax[i])-height[i];}return ret;}
}
原来java这些语言都这么快,真是用久了python不知道外面的天高地厚。