快看黄晓明的球形胸肌 哈哈# Joke - 肚皮舞运动
h*y
1 楼
在网上发现这个最大直方图求面积的题目的解答,有一个地方没看明白
http://www.sureinterview.com/shwqst/1117001
下面这个代码的stack为什么有一个get的方法?
if (prev.height > stk.get(stk.size() - 2).height) {
======================================================================
public long getMaxArea(int[] histogram) {
long maxArea = 0;
if (histogram == null || histogram.length == 0)
return maxArea;
Stack- stk = new Stack
- ();
stk.push(new Item(Integer.MIN_VALUE, -1));
for (int i = 0; i <= histogram.length; i++) {
Item cur = new Item((i < histogram.length ? histogram[i]
: Integer.MIN_VALUE), i);
if (cur.height > stk.peek().height) {
stk.push(cur);
continue;
}
while (stk.size() > 1) {
Item prev = stk.peek();
long area = (i - prev.pos) * prev.height;
if (area > maxArea) {
maxArea = area;
}
prev.height = cur.height;
if (prev.height > stk.get(stk.size() - 2).height) {
break;
}
stk.pop();
}
}
return maxArea;
}
http://www.sureinterview.com/shwqst/1117001
下面这个代码的stack为什么有一个get的方法?
if (prev.height > stk.get(stk.size() - 2).height) {
======================================================================
public long getMaxArea(int[] histogram) {
long maxArea = 0;
if (histogram == null || histogram.length == 0)
return maxArea;
Stack
stk.push(new Item(Integer.MIN_VALUE, -1));
for (int i = 0; i <= histogram.length; i++) {
Item cur = new Item((i < histogram.length ? histogram[i]
: Integer.MIN_VALUE), i);
if (cur.height > stk.peek().height) {
stk.push(cur);
continue;
}
while (stk.size() > 1) {
Item prev = stk.peek();
long area = (i - prev.pos) * prev.height;
if (area > maxArea) {
maxArea = area;
}
prev.height = cur.height;
if (prev.height > stk.get(stk.size() - 2).height) {
break;
}
stk.pop();
}
}
return maxArea;
}