题解 | #牛舍的占地面积#
牛舍的占地面积
https://www.nowcoder.com/practice/4d9d9bf23d874688aee6fc1ac5bf6902
题目考察的知识点
考察单调栈的应用
题目解答方法的文字分析
使用栈结构来解决,栈中元素单调递增,每次将栈顶元素同数组元素进行比较,根据他们的大小关系采用不同的策略。大于栈顶元素就继续入栈。
本题解析所用的编程语言
使用Java解答
完整且正确的编程代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param areas int整型一维数组
* @return int整型
*/
public int maxArea (int[] areas) {
// write code here
Stack<Integer> stack = new Stack<>();
int area = 0;
for(int i=0;i<areas.length;i++){
while(!stack.isEmpty() && areas[i]<=areas[stack.peek()]){
int top = areas[stack.pop()];
int right = i;
int left = stack.isEmpty()?-1:stack.peek();
area = Math.max(area,top*(right-left-1));
}
stack.add(i);
}
while(!stack.isEmpty()){
int top = areas[stack.peek()];
int right = stack.pop();
int left = stack.isEmpty()?-1:stack.peek();
area = Math.max(area,top*(right-left));
}
return area;
}
}
