【名企笔试】美团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.代码
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
输入描述:
输入包括两行,第一行包含一个整数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
相关文章推荐
- 美团2017校招-最大矩形面积
- 【名企笔试】美团2017校招 大富翁游戏
- [编程题] 最大矩形面积(美团点评2017秋招)
- 美团2017校招笔试--取红包问题
- 名企笔试:蘑菇街2017校招笔试题(修理桌子问题)2017-03-09 算法爱好者
- 最大差值(2017某计算机校招笔试试题)
- 解答:名企笔试:美团2016校招(棋子翻转)
- 2017 icpc 南宁赛区 F.Overlapping Rectangles(重叠矩形的最大面积+线段树模板)
- 美团点评2017校招笔试真题-算法工程师A
- 2017校招 美团笔试题 编程题 层次遍历多叉树
- 【美团】最大矩形面积(分治法)
- 百度2017校招java研发在线笔试
- 华为2017校招第二题删除重复的数,得到最大值。
- poj3494 连续区域最大矩形面积 我要做的足够 强大
- 趋势2017校招 笔试题
- 【nowcoder-2017校招真题】保留最大的数
- 名企笔试:好未来2017秋招笔试(连续最长的数字串)
- 名企笔试:美团2016招聘笔试(股票交易日)
- 【在线笔试题解题报告系列】网易2017校招内推笔试之编程题【持续更新】
- 庞果网之寻找直方图中面积最大的矩形