leetcode
来源:互联网 发布:如何申请淘宝小号涮单 编辑:程序博客网 时间:2024/06/06 16:28
Largest Rectangle in Histogram
Given n non-negative integers representing the histogram’s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.
Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3]
.
The largest rectangle is shown in the shaded area, which has area = 10 unit.
For example,
Given heights = [2,1,5,6,2,3]
,
return 10
.
Solution1:
public int largestRectangleArea(int[] height) { int len = height.length; LinkedList<Integer> s = new LinkedList<Integer>(); int maxArea = 0; for (int i = 0; i <= len; i++) { int h = (i == len ? 0 : height[i]); if (s.isEmpty() || h >= height[s.peek()]) { s.push(i); } else { int tp = s.pop(); maxArea = Math.max(maxArea, height[tp] * (s.isEmpty() ? i : i - 1 - s.peek())); i--; } } return maxArea; }
Solution2:
better
public int largestRectangleArea(int[] height) { int len = height.length; LinkedList<Integer> s = new LinkedList<Integer>(); int maxArea = 0; for (int i = 0; i <= len; i++) { int h = (i == len ? 0 : height[i]); while (s.size() > 0 && h < height[s.peek()]) { int tp = s.pop(); maxArea = Math.max(maxArea, height[tp] * (s.isEmpty() ? i : i - 1 - s.peek())); } s.push(i); } return maxArea; }
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- Office 365开发概述及生态环境介绍(一)
- 初学ros机器人程序设计
- 数据结构----线段树----线段树的基本算法
- linux-unit1练习题
- Android手机USB调试安全闲扯(315晚会免费充电桩事件)
- leetcode
- poj 3185 The Water Bowls 反转问题
- tes
- JS第一天
- 艳辉活动——迎春3月带你飞
- ORACLE 导入总结
- leetcode
- 开源免费的.NET图像即时处理的组件ImageProcessor
- 构造函数和析构函数小结