|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。
输入:
[
["1","0","1","0","0"],
["1","0","1","1","1"],
["1","1","1","1","1"],
["1","0","0","1","0"]
]
输出: 6
来源:力扣(LeetCode)链接:
本帖最后由 阴阳神万物主 于 2019-11-20 17:05 编辑
乱码咯,编辑一下吧,虽然能看懂……
解答:
- def solve(give)->int:
- area = 0
- a,b=0,0
- height = len(give)
- width = len(give[0])
- for i in range(height):
- bottom = height
- for j in range(width):
- if give[i][j] == '1':
- a += 1
- else:
- a,b = 0,0
- for q in range(i,bottom):
- if give[q][j] == '1':
- b += 1
- area = max(area,a*b)
- #print('调试\n\ti\tj\tq\ta\tb\tmul\tarea\n',i,j,q,a,b,a*b,area,sep='\t')
- if q == bottom-1:
- b = 0
- if not i:
- if area == height*width:
- return area
- else:
- bottom = q
- b = 0
- if j == width-1:
- a,b = 0,0
- return area
- if __name__ == '__main__':
- matrix = [
- ["1","0","1","0","0"],
- ["1","0","1","1","1"],
- ["1","1","1","1","1"],
- ["1","0","0","1","0"]
- ]
- print('6 输出',solve(matrix))
- test = [
- ['1','1'],
- ['1','1']
- ]
- print('4 输出',solve(test))
复制代码时间复杂度:O(height*width*height!)
不晓得能不能再优化
|
|