标签:
/* * 从两边各扫描一次得到我们需要维护的变量,通常适用于当前元素需要两边元素来决定的问题------------------------------ * 42. Trapping Rain Water * 12.5 by Mingyang * 两个指针,最左边和最右边,分别代表leftmax和rightmax * 如果左边小,那么左边指针往右边移,经过的每一个地方再跟leftmax比较得出每一小块积累的水量 * 注意,没到一个新的点的时A[a]需要与leftmax比谁大,更新leftmax */ public int trap(int[] A){ int a=0; int b=A.length-1; int max=0; int leftmax=0; int rightmax=0; while(a<=b){ leftmax=Math.max(leftmax,A[a]); rightmax=Math.max(rightmax,A[b]); if(leftmax<rightmax){ max+=(leftmax-A[a]); // leftmax is smaller than rightmax, so the (leftmax-A[a]) water can be stored a++; } else{ max+=(rightmax-A[b]); b--; } } return max; }
标签:
原文地址:http://www.cnblogs.com/zmyvszk/p/5460970.html