2014年腾讯实习生招聘最后一题
来源:互联网 发布:淘宝怎么删除我的订单 编辑:程序博客网 时间:2024/05/17 13:12
题目来源于:http://blog.chinaunix.net/uid-29038263-id-4198455.html
给定n块木板A[1...n],高度记为A[i],每块目标高度不等,宽度相等,用这些木板排列成一面木板墙,木板排列好后,求解木板墙中最大的矩形面积,请设计算法求得木板墙最大的矩形面积,并分析算法效率。
举例说明,如下图所示的木板排列,最大矩形面积为深灰色区域,即4*3=12。
自己写的时间复杂度为o(n)的解法
#include <iostream>
using namespace std;
int GreatestMultiplyOfSubarrays(int *pData, int length)
{
int multiply=0, prevMultiply=0 ,max=0, minValue=0;
int temp=0;
for(int i=0; i<length; i++){
if(i==0 || multiply ==0 || multiply == 1 || multiply==prevMultiply){
if(multiply==prevMultiply)
prevMultiply = -1;
temp=i;
multiply=pData[i];
minValue=pData[i];
}else{
if(pData[i] == 1){
continue;
}
if(pData[i]<minValue)
minValue=pData[i];
prevMultiply = multiply;
multiply=(i-temp+1)*minValue;
}
if(multiply>max){
max=multiply;
}
}
return max;
}
int main()
{
int a[]={1,2,3,0,4,1,4,7};
int b[]={6, 4, 5, 0, 2, 7, 1, 2};
cout<<"max in a"<<endl;
cout<<GreatestMultiplyOfSubarrays(a,sizeof(a)/sizeof (*a))<<endl;
cout<<"max in b"<<endl;
cout<<GreatestMultiplyOfSubarrays(b,sizeof(b)/sizeof (*b))<<endl;
system("pause");
return 0;
}
- 腾讯2014年实习生招聘附加题最后一题
- 2014年腾讯实习生招聘最后一题
- 腾讯2014年实习生招聘试题
- 2012年腾讯招聘实习生笔试题
- 2012年腾讯招聘实习生笔试题
- 腾讯2016年实习生招聘笔试题
- 腾讯2014校园实习生招聘
- 腾讯2015实习生招聘模拟考--其中一题
- 腾讯2015实习生招聘模拟考--其中一题
- 2014年实习生招聘之腾讯实习生招聘面试(一面)—2014/04/01
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试+两次面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历(转)
- 2012年腾讯招聘实习生一道笔试题
- 2015年腾讯软件开发实习生招聘笔试题
- 2015年腾讯暑假实习生招聘部分笔试题
- Shell脚本之sed篇
- ECSHOP修改模板知识大全
- Canonical Correlation Analysis(一)
- POJ 1700 Crossing River
- 去掉UIWebView上下滚动出边界时的黑色阴影
- 2014年腾讯实习生招聘最后一题
- Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解
- Apache POI组件操作Excel(导入和导出)
- 程序的内存分配
- sizeof(结构体)和内存对齐以及位域
- Howto let the SAX parser determine the encoding from the xml declaration?
- 自然语言处理(NLP)网上资源整理
- 初识三层
- 创建线程的第三种方式Callable和Future CompletionService