当前宽度:i - left - 1,当前高度:Math.min(height[right], height[left]) - height[mid]。
Java代码:
classSolution{publicinttrap(int[] height){int sum =0;if(height.length <=2)return sum;Deque<Integer> stack =newLinkedList<>();for(int i =0; i < height.length; i++){while(!stack.isEmpty()&& height[i]> height[stack.peek()]){int right = i;int mid = stack.pop();if(!stack.isEmpty()){int left = stack.peek();int w = right - left -1;int h =Math.min(height[right], height[left])- height[mid];int s = w * h;
sum += s;}}
stack.push(i);}return sum;}}
classSolution{publicintlengthOfLongestSubstring(String s){int result =0;if(s ==null)return result;char[] chars = s.toCharArray();Set<Character> set =newHashSet<>();int left =0;for(int right = left; right < chars.length; right++){while(set.contains(chars[right])){
set.remove(chars[left]);
left++;}
set.add(chars[right]);
result =Math.max(result, right - left +1);}return result;}}