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

给定一组非负整数组成的数组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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值