leetcode 84 Largest Rectangle in Histogram
2016-06-03 17:42
330 查看
public class Solution { public int largestRectangleArea(int[] heights) { // Stack h = new Stack(); if(heights == null || heights.length==0) return 0; else{ int ractangle=0 ; int[] left = new int[heights.length]; int[] right = new int[heights.length]; left[0] = -1; right[heights.length-1] = heights.length;//初始化左右边界 for(int i=1;i<heights.length;i++){ int z = i-1; while(z>=0 && heights[i]<=heights[z]){ z = left[z]; } left[i] = z; //后右边界 //ractangle = (heights[i] * (j+k+1))>ractangle?ractangle = heights[i] *(j+k+1):ractangle; } for(int i=heights.length-2;i>=0;i--){ int z = i+1; while(z<heights.length && heights[i]<=heights[z]){ z = right[z]; } right[i] = z; } for(int i=0;i<heights.length;i++){ ractangle = Math.max(ractangle,heights[i]*(right[i]-left[i]-1)); } return ractangle; } } }
时间复杂度为o(n),运行4ms,使用数组求左右边界,并未使用单调栈
相关文章推荐
- Drawerlayou与ScrollView的介绍
- 使用Java VisualVM监控远程JVM cpu jps
- 0603学术诚信和职业道德
- codeforces 439 E. Devu and Birthday Celebration 组合数学 容斥定理
- iOS8 tableview separatorInset cell分割线左对齐,ios7的方法失效了
- linux下面用ssh上传,下载文件
- vprintf printf区别
- Qualcomm物联网生态圈
- Android项目笔记七:自定义的sqliteClass
- 睡醒,刷题
- 不只是技术!成为IT经理必备的十大软技能
- iOS 公司级app发布教程
- CNPM私有库在企业中的应用
- [从头读历史] 第240节 移花接木 [机器小伟]的奇幻读史之旅开启
- $.extend()的实现源码 --(源码学习1)
- 如何提高eclipse开发效率
- PHP笔记4-运算符
- 修复kali Linux安装AMD ati显卡驱动后开机黑屏
- lucene--Field.Store解析
- Python实现遍历url