程序员代码面试指南 python实现(第一章 栈和队列 :求最大子矩阵的大小)

程序员代码面试指南 python实现(求最大子矩阵的大小)

程序员代码面试指南 python实现(第一章 栈和队列)

求最大子矩阵的大小

题目描述
在这里插入图片描述
在这里插入图片描述
第一步:
在这里插入图片描述
第二步:
在这里插入图片描述
在这里插入图片描述
详解第二步:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Stack(object):
    def __init__(self):
        self.item = []

    def isEmpty(self):
        return self.item == []

    def push(self,newElem):
        self.item.append(newElem)

    def pop(self):
        if self.isEmpty():
            raise Exception("Your stack is Empty!")
        else:
            return self.item.pop()

    def peek(self):
        if self.isEmpty():
            raise Exception("Your stack is Empty!")

        else:
            return self.item[len(self.item)-1]

    def size(self):
        return len(self.item)


def maxRocFromBottom(height):
    if height == None or len(height) == 0:
        return
    maxArea = 0
    stack = Stack()
    for i in range(len(height)):
        while stack.isEmpty() != True and height[i] <= height[stack.peek()]:
            j = stack.pop()
            if stack.isEmpty():
                k = -1
            else:
                k = stack.peek()

            curArea = (i-k-1)*height[j]
            maxArea = max(maxArea,curArea)

        stack.push(i)
    while stack.isEmpty() != True:
        j = stack.pop()
        if stack.isEmpty() :
            k = -1
        else:
            k = stack.peek()
        curArea = (len(height) - k - 1)*height[j]
        maxArea = max(maxArea,curArea)
    return maxArea




def maxRecSize(map):
    if map == None or len(map) == 0 or len(map[0]) == 0:
        return
    maxArea = 0

    height = [0 for index in range(len(map[0]))]
    print(height)
    for i in range(len(map)):
        for j in range(len(map[0])):
            if map[i][j] == 0:
                height[j] = 0
            else:
                height[j] = height[j]+1


        maxArea = max(maxRocFromBottom(height),maxArea)
        print(height)

    return maxArea
发布了64 篇原创文章 · 获赞 9 · 访问量 4369

猜你喜欢

转载自blog.csdn.net/Avery123123/article/details/102909189