2014年腾讯实习生招聘最后一题
2014-04-25 11:16
260 查看
题目来源于: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年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘试题
- 2014年实习生招聘之腾讯实习生招聘面试(一面)—2014/04/01
- 腾讯2014年实习生招聘笔试+两次面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘广州站offer经历(TEG-后台开发)
- 腾讯2014年实习生招聘广州站offer经历(TEG-后台开发)
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历(转)
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历
- 腾讯2014年实习生招聘笔试面试经历