您的位置:首页 > 其它

【名企笔试】美团2017校招笔试(最大矩形面积)

2018-02-07 13:13 453 查看
给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。

输入描述:

输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000)

第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)

输出描述:

输出一个整数,表示最大的矩阵面积。

输入例子:

6

2 1 5 6 2 3

输出例子: 10


2.代码


#!/usr/bin/python
# -*- coding: UTF-8 -*-

if __name__ == '__main__':

# 输入值
num = 6
list = [2, 1, 5, 6, 2, 3]

if num != len(list):
print('Input ERROR!')
area = []
for n in range(1, num+1):
print('.............cishu..............', n, '\njuxing_height', list[n-1])
kuan = 1
break_flag_left = False
break_flag_right = False
while break_flag_left == False:
if n <= 1:
break_flag_left = True
else:
for i in range(num):
if n-i <= 1:
break_flag_left = True
elif list[n-i-2] >= list[n-1]:
kuan += 1
else:
break_flag_left = True
print('left_kuan: ', kuan-1)
while break_flag_right == False:
if n >= num:
break_flag_right = True
else:
for i in range(num):
if n+i >= num:
break_flag_right = True
elif list[n-1] <= list[n+i]:
kuan += 1
else:
break_flag_right = True
print('sum_kuan: ', kuan, '\narea = ', list[n-1]*kuan)
area.append(list[n-1]*kuan)
print(area, '\n', max(area))

3.结果
.............cishu.............. 1

juxing_height 2

left_kuan:  0

sum_kuan:  5

area =  10

.............cishu.............. 2

juxing_height 1

left_kuan:  1

sum_kuan:  6

area =  6

.............cishu.............. 3

juxing_height 5

left_kuan:  0

sum_kuan:  2

area =  10

.............cishu.............. 4

juxing_height 6

left_kuan:  0

sum_kuan:  1

area =  6

.............cishu.............. 5

juxing_height 2

left_kuan:  3

sum_kuan:  5

area =  10

.............cishu.............. 6

juxing_height 3

left_kuan:  2

sum_kuan:  3

area =  9

[10, 6, 10, 6, 10, 9]

 10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: